演算法資料結構筆記 快速排序

2021-08-22 18:10:14 字數 849 閱讀 8103

快速排序通過左右兩邊各指定乙個指標,不斷向中間靠攏,如果左邊的指標找到比基準點大的,或者右邊的指標找到比基準點小的,就把他們交換,基準點一般是陣列的第乙個的值。

左右指標指向同乙個值,就把這個值和基準點交換。我們就找到了基準點本來的的位置;很顯然:雖然順序不對,但他的左邊都是比他小的,右邊都是比他大的,比如:

4,1,3,6,9,7,8
雖然順序不對,但注意6這個數字,即使是完全從小到大排列:

1,3,4,6,7,8,9
他還是這個位置。

然後遞迴呼叫,慢慢分解,就排序好了。

下邊是維基百科的圖:

} //找到了那個點,把基準點和i交換

a[left] = a[i];

a[i] = temp;

****(left, j - 1); //遞迴呼叫,先搞左邊的

****(j + 1, right); //然後遞迴右邊的

}int main()

****(0, t - 1); //呼叫快速排序函式,這是主體。

for (int i = 0; i < t; i++)

printf("%d ", a[i]);

printf("\n");

system("pause");

return 0;

}

快速排序演算法 資料結構

快排基本思想 在待排序的n個元素中任取乙個元素 通常取第乙個元素 作為基準,把該元素放入最終的位置上 即歸位乙個元素 資料序列被此元素劃分成倆部分 所有關鍵子比該元素關鍵字小的元素放置在前一部分,所有比它大的元素放置在後一部分,這個過程稱作一趟排序。以後對所有的倆部分分別重複上述過程,直至每部分內只...

排序演算法 資料結構

把插入排序的1變成dk 和圖示不一樣,是冒泡最小 只用於正數 1 public int sortarray int nums 8int bit 0 9while max math.pow 10,bit 12for int i 0 i bit i 17for integer n nums 22int ...

演算法資料結構筆記 列舉

列舉就是猜測每一種可能性,比如1 3,如果不用代數計算的話,那麼就把0 9都嘗試一遍,即可得出答案。考慮這樣的乙個問題,51 空格中,數字隨意填寫,可重複,不考慮0。我們通過四層for迴圈,分別遍歷1 9暴力列舉所有數字組合可能性,來得出答案。include include include int ...