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

2021-07-27 20:18:42 字數 724 閱讀 7699

快速排序的整體思想就是分治思想選取乙個基準值,從左右兩邊各選取乙個值進行交換(左邊選乙個大於基準值的位置,右邊選乙個小於基準值的位置)。在效果上就是將乙個大空間分成了左右兩個小空間,然後遞迴再再將左右兩個空間分成更小的兩個空間。

它和氣泡排序最大的區別就是:冒泡每次交換的是兩個相鄰的數,而快排的交換距離就大得多。

我們練習一下經典版的快排

int a = ;

void quicksort(int left, int right)

//選取基準值

int temp = a[left];

int i = left;

int j = right;

//一趟

while (i != j)

//再從左往右找

while (a[i]<=temp&& i < j)

if (i < j)

}//調整基準值

a[left] = a[i];

a[i] = temp;

//分而治之

最常用的排序 快速排序

是一種不浪費空間又可以快一點的排序演算法。假設對 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 這...

最常用的排序 快速排序法

桶排序浪費空間,氣泡排序雖然解決了空間問題卻在演算法的執行效率上犧牲了很多,因此我們的快速排序法就誕生了,是不是聽這個名字就很高檔呢?假設現在需要對 6,1,2,7,9,3,4,5,10,8 這十個數排序.我們需要先定義乙個基準數,其實也就是乙個作為參照的數,為了方便一般就把第乙個數作為基準數,也就...