快速排序的整體思想就是分治思想,選取乙個基準值,從左右兩邊各選取乙個值進行交換(左邊選乙個大於基準值的位置,右邊選乙個小於基準值的位置)。在效果上就是將乙個大空間分成了左右兩個小空間,然後遞迴再再將左右兩個空間分成更小的兩個空間。
它和氣泡排序最大的區別就是:冒泡每次交換的是兩個相鄰的數,而快排的交換距離就大得多。
我們練習一下經典版的快排
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 這十個數排序.我們需要先定義乙個基準數,其實也就是乙個作為參照的數,為了方便一般就把第乙個數作為基準數,也就...