選擇乙個基準元素,通常選擇第乙個元素或者最後乙個元素,通過一趟掃瞄,將排序列分成兩部分,一部分比基準元素小,一部分大於基準元素,此時基準元素在其排好序後的正確位置,然後再用同樣的方法遞迴地排序劃分的兩部分。
//快速排序
public
class fastsort ;
int start = 0;
int end = a.length-1;
sort(a,start,end);
for(int i = 0; iout.println(a[i]);}}
public
static
void
sort(int a,int left,int right)
//從前往後比較
while(end>start&&a[start]<=key)//如果沒有比關鍵值大的,比較下乙個,直到有比關鍵值大的交換位置
start++;
if(a[start]>=key)
//此時第一次迴圈比較結束,關鍵值的位置已經確定了。左邊的值都比關鍵值小,右邊的值都比關鍵值大,但是兩邊的順序還有可能是不一樣的,進行下面的遞迴呼叫
}//遞迴
if(start>left) sort(a,left,start-1);//左邊序列。第乙個索引位置到關鍵值索引-1
if(end1,right);//右邊序列。從關鍵值索引+1到最後乙個
}}
Java八大排序演算法之一希爾排序
演算法先將要排序的一組數按某個增量d n 2,n為要排序數的個數 分成若干組,每組中記錄的下標相差d.對每組中全部元素進行直接插入排序,然後再用乙個較小的增量 d 2 對它進行分組,在每組中再進行直接插入排序。當增量減到1時,進行直接插入排序後,排序完成。希爾排序 最小增量排序 public cla...
八大排序演算法java
本文只介紹演算法實現的 預設都這一已經理解演算法思想,若不理解可以參考八大排序演算法思想 交換兩個數 public static void swap int arr,int i,int j 氣泡排序 public static void bubblesort int arr for int i 0 ...
java八大排序演算法
學習左程雲演算法課初級班 1,歸併排序,這是分治的思想,例如有乙個陣列,先將左半部分排好序,再將右半部分排好序,最後再將兩邊的數通過乙個輔助陣列將它們逐個放到輔助陣列裡面,這個過程中逐漸比較兩邊頭位置的數的大小。求乙個陣列的中間位置,可以int mid l r l 1 右移運算 位運算 速度快一些。...