本文只介紹演算法實現的**,預設都這一已經理解演算法思想,若不理解可以參考八大排序演算法思想
//交換兩個數
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 ...