最近去面試,都考到了排序,考的比較多的是快速排序,發現自己**實現能力還是很次啊,趕緊抓緊學起來~
選擇乙個基準元素(通常是第乙個元素或者最後乙個元素,當然也可以選擇幾個值的均值或中值,例如,取第乙個,中間的,最後乙個的中值),通過一趟掃瞄,將待排序的分成兩部分,一部分比基準元素小,一部分大於基準元素。此時基準元素再其排好序的正確位置(一般是中間),然後再利用同樣的方法遞迴地排序。
這裡舉例是一趟掃瞄後,基準元素在中間,其左邊數都比基準元素小;其右邊的都比基準元素大。然後再分別對左右兩邊採用同樣的方法,這裡不再贅述。
時間複雜度o(nlogn),空間複雜度o(nlogn)
不穩定
當n較大的時候使用快排比較好,但是當基本有序的時候,使用快排反而不好
package learn_and_exercise;
public class quick ;
system.out.println("快速排序的結果是:");
quicksorted(a,0,a.length - 1);
printscreen(a);
}//快速排序
/***
* @param number
* @param low
* @param high
*/public static void quicksorted(int number , int low , int high)
}private static int getmiddle(int number, int low, int high)
number[low] = number[high];
while((low < high) && number[low] <= temp)
number[high] = number[low];
}number[low] = temp;
return low;
}private static void printscreen(int a)
system.out.println();}}
排序3 氣泡排序 排序4 快速排序
交換類的排序有快速排序,氣泡排序 3.氣泡排序 3.1原理 設原資料為 5 2 9 1 第一趟從第乙個數字5開始arr j arr j 1 交換,小於等於不交換 5 2交換 2 5 9 1 5 9 不交換 2 5 9 1 9 1交換 2 5 1 9 最大數字9已經到最後 第二趟2 5不交換 2 5 ...
排序演算法 3 氣泡排序與快速排序
氣泡排序演算法原理 1 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個 2 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。3 針對所有的元素重複以上的步驟,除了最後乙個。4 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較...
No 3 快速排序
桶排序,浪費空間,氣泡排序,時間複雜度高,快排 應該是一種比較好的排序演算法,既省空間又降低了時間複雜度,它的時間複雜度是o nlog n 但是在最壞的情況下它的時間複雜度和氣泡排序一樣為o n 2 假設我們要給 8 2 3 5 1 6 4 10 9 7 這樣一組數排序,利用 快排 首先從這組數中選...