八大排序演算法java

2021-08-04 10:57:40 字數 1649 閱讀 4940

本文只介紹演算法實現的**,預設都這一已經理解演算法思想,若不理解可以參考八大排序演算法思想

//交換兩個數

public static void swap(int arr,int i,int j)

//氣泡排序

public static void bubblesort(int arr)

for (int i=0;iarr[j+1])

swap(arr,j,j+1);}}

}//選擇排序

public static void selectsort(int arr)

for (int i=0;i= 0 && arr[j] > tmp ; j--)

arr[j+1]=tmp;}}

//快速排序:禮尚往來

public static void quicksort(int arr,int low,int high)

int start=low;

int end=high;

int key=arr[low];

while (end > start)

//遞迴

if (start > low)

quicksort(arr,low,start-1);

if (end < high)

quicksort(arr,end+1,high);

}//堆排序

//構建大根堆:將arr看成完全二叉樹的順序儲存結構

private static int buildmaxheap(int arr)

return arr;

}//將元素arr[k]自下往上逐步調整樹形結構

private static void adjustdowntoup(int arr,int k,int length)

}arr[k]=tmp; //被調整的結點的值放人最終位置

}//堆排序

public static void heapsort(int arr)

arr=buildmaxheap(arr); //初始建堆,array[0]為第一趟值最大的元素

for (int i=arr.length-1;i>=1;i--)

}//希爾排序

public static void shellsort(int arr)

//設定增量

int increment=arr.length/2;

while (increment >= 1)

}//設定新的增量

increment/=2;}}

//歸併排序

public static void mergesort(int arr,int low,int high)

}public static void merge(int arr,int low,int mid,int high){

int tmparr=new int[high-low+1];

int i=low; //左指標

int j=mid+1; //右指標

int k=0;

//把較小的數先移到新陣列中

while (i <= mid && j <= high) {

if (arr[i]

java八大排序演算法

學習左程雲演算法課初級班 1,歸併排序,這是分治的思想,例如有乙個陣列,先將左半部分排好序,再將右半部分排好序,最後再將兩邊的數通過乙個輔助陣列將它們逐個放到輔助陣列裡面,這個過程中逐漸比較兩邊頭位置的數的大小。求乙個陣列的中間位置,可以int mid l r l 1 右移運算 位運算 速度快一些。...

八大排序演算法Java實現

常見的八大排序演算法,它們之間的關係如下 經常碰到這樣一類排序問題 把新的資料插入到已經排好的資料列中。將第乙個數和第二個數排序,然後構成乙個有序序列 將第三個數插入進去,構成乙個新的有序序列。對第四個數 第五個數 直到最後乙個數,重複第二步。首先設定插入次數,即迴圈次數,for int i 1 i...

八大排序演算法

1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...