排序(3) 快速排序

2021-07-24 15:29:45 字數 1119 閱讀 9693

最近去面試,都考到了排序,考的比較多的是快速排序,發現自己**實現能力還是很次啊,趕緊抓緊學起來~

選擇乙個基準元素(通常是第乙個元素或者最後乙個元素,當然也可以選擇幾個值的均值或中值,例如,取第乙個,中間的,最後乙個的中值),通過一趟掃瞄,將待排序的分成兩部分,一部分比基準元素小,一部分大於基準元素。此時基準元素再其排好序的正確位置(一般是中間),然後再利用同樣的方法遞迴地排序。

這裡舉例是一趟掃瞄後,基準元素在中間,其左邊數都比基準元素小;其右邊的都比基準元素大。然後再分別對左右兩邊採用同樣的方法,這裡不再贅述。

時間複雜度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 這樣一組數排序,利用 快排 首先從這組數中選...