最常用的排序 快速排序法

2021-10-02 03:58:33 字數 1016 閱讀 6120

桶排序浪費空間,氣泡排序雖然解決了空間問題卻在演算法的執行效率上犧牲了很多,因此我們的快速排序法就誕生了,是不是聽這個名字就很高檔呢?

假設現在需要對"6,1,2,7,9,3,4,5,10,8"這十個數排序.我們需要先定義乙個基準數,其實也就是乙個作為參照的數,為了方便一般就把第乙個數作為基準數,也就是我們的數字6.

方法其實很簡單:分別從初始序列「6,1,2,7,9,3,4,5,10,8」兩端開始「探測」。先從右往左找乙個小於6的數(切記,一定是要從右向左開始),再從左往右找乙個大於6的數,然後交換他們。這裡可以用兩個變數ij,分別指向序列最左邊和最右邊。剛開始的時候讓i指向序列的最左邊(即i=1),指向數字6。讓j指向序列的最右邊(即j=10),指向數字8。

然後 j 就找到了"5",i 就到了"7",交換 i 和 j 現在序列就變成了"6,1,2,5,9,3,4,7,10,8".繼續向下尋找,變成"6,1,2,5,4,3,9,7,10,8"突然 i,j 在"3"相遇了,這時候在把"3"和基準數"6"交換.「3,2,5,4,3,6,10,7,9,8」.這樣就把小於6的放在了左邊,大於的放在了右邊.

相同的道理,再處理"6"的左邊和右邊.最後就變成了"1,2,3,4,5,6,7,8,9,10".

#include

int a[

100]

;void

quicksort

(int left,

int right)

} a[left]

=a[i]

; a[i]

=temp;

//繼續處理基準數的左邊和右邊

quicksort

(left,i-1)

;quicksort

(i+1

,right)

;return;}

intmain()

}

最常用的排序 快速排序

是一種不浪費空間又可以快一點的排序演算法。假設對 6 1 2 7 9 3 4 5 10 8 這10個數進行排序。首先在這個序列裡隨便找乙個數作為基準數。為了方便,讓6作為基準數,將這個序列中所有比基準數大的數放在6的右邊,比基準數小的數放在6的左邊。方法 分別從初始序列 6 1 2 7 9 3 4 ...

最常用的排序 快速排序

相對於桶排序,節省了空間,相對於氣泡排序,節省了時間,可謂是兩者兼顧的一種更優化的演算法 實現 假設有 初始序列 6 1 2 7 9 3 4 5 10 8 那麼從初始序列的兩端開始探測。先從右往左找到乙個比6小的數,然後在從左往右找到乙個比6大的數,然後交換他們。6 1 259 3 4710 8 這...

對於最常用的排序快速排序的思考

快速排序的整體思想就是分治思想,選取乙個基準值,從左右兩邊各選取乙個值進行交換 左邊選乙個大於基準值的位置,右邊選乙個小於基準值的位置 在效果上就是將乙個大空間分成了左右兩個小空間,然後遞迴再再將左右兩個空間分成更小的兩個空間。它和氣泡排序最大的區別就是 冒泡每次交換的是兩個相鄰的數,而快排的交換距...