快速排序法是對氣泡排序法的一種改進。他的基本思想是通過一趟排序把資料分割成獨立的兩部分, 其中一部分的所有資料都比另一部分要小,以達到整個資料的排序。
首先選取乙個資料為基準x通常選取第乙個資料。設定兩個變數i,j開始排序的時候i = 0 j = n-1(這裡n為資料的個數)。從j開始搜尋,即從後往前搜尋,找到小於x的值兩者交換。,之後從i開始搜尋,找到大於x的值交換兩者,交叉重複以上兩步,直到i = j;
舉個例子:
a[0] a[1] a[2] a[3] a[4] a[5]
49 38 65 97 76 13
進行第一次排序:
交換之後的結果 13 38 65 97 76 49這時j = 4;
第二次排序:
交換之後的結果 13 38 49 97 76 65這時i = 2;
第三次排序:
交換之後的結果 13 38 49 97 76 65 這時j = 2;
i = j快速排序結束。 49 達到預期結果
演算法系列(三) 快速排序
快速排序 終於到我們人見人愛,花見花開,鳥見鳥呆,車見車爆胎 快排的好處不用多說,平均時間的nlogn o 1 的輔助空間,一般比其他的排序演算法要快得多。當然也有些不足,首先,不穩定,所以多關鍵字排序的最後一排肯定不能用了,另外,最壞情況下則為n 2 快速排序和歸併排序一樣,都屬於分治的排序方法。...
JAVA演算法系列 快速排序
首先說一下什麼是快排,比冒泡效率要高,快排的基本思路是首先找到乙個基準元素,比如陣列中最左邊的那個位置,作為基準元素key,之後在最左邊和最右邊設立兩個哨兵,i和j 之後,開始按住左哨兵 i 讓右哨兵 j 往左走 j 找到比key小的元素後,按住右哨兵 j 開始讓左哨兵往右走 i 直到找到比key大...
演算法系列 排序演算法(四)快速排序
快速排序是通過兩個指標相互交換完成一次快速排序,類似於遞迴的二分排序,從交換上來講比較像冒泡 為什麼這麼說呢?不管是插入還是直接,都需要在移動之前遍歷元素 冒泡直接比較交換。公升序 資料 4251 376下標 0123 4561 指標1 4 指標2 6 指標1是用來二分的標準,指標2是被二分的元素,...