資料結構 快速排序

2021-09-12 00:05:43 字數 1533 閱讀 6218

1.1 存在乙個需要排序的無序序列a[54 38 96 23 15 72 60 45 83],將序列抽象為a[low—mid—high];

1.2 將序列中的第乙個記錄 54 作為乙個基準,pivot = a[low],此時無序序列為

a[__ 38 96  23  15  72  60  45  83];

i j

1.3 用j從序列的右邊開始往左找,在沒有遇到i時,找到第乙個比基準54小的值後停下來,找到了45;將45放在第乙個空位置

a[45  38  96  23  15  72  60  __  83]

i j

1.4 然後用i從序列的左邊開始往右找,在沒有遇到j時,找到第乙個比基準54大的值後停下來,找到了96;將96放在空的位置

a[45  38  __  23  15  72  60  96  83]

i j

1.5 繼續從j停止的位置從右向左走,在沒有遇到i時,找到第二個比基準54小的值後停下來,找到了15;將15放在空的位置上

a[45  38  15  23  __ 72  60  96  83]

i j

1.6 繼續從i停止的位置從左向右走,在沒有遇到j時,找比基準大的值,此時遇到了j,此時把基準值54放在ij相遇的位置。

a[45  38  15  23  __  72  60  96  83]

ij

a[45  38  15  23  54  72  60  96  83]

ij

可以看到,此時序列大概有序了,比54小的都排在了左邊,比54大的都排在了右邊。

1.7 接下來基準54不參加排序,將54左邊的序列[45 38 15 23]再看做是乙個無序序列再按上述方法排序,

同樣將54右邊的序列[72 60 96 83]也按上述方法排序,直到整個序列有序。

void quick_sort(int a , int low , int high)

a[i]= pivot;

quick_sort(a , low , i-1); //基數左邊的序列進行快速排序

quick_sort(a , i+1 , high); //基數右邊的序列進行快速排序

}}void main()

; quick_sort(data , 0 , 8);

for(i =0 ; i < 9; i++)

cout《快速排序是不穩定的。

快速排序最理想情況下的演算法時間複雜度是o(nlogn),最壞位o(n^2)。

資料結構 排序 快速排序

對序列 47,31,83,91,57,18,96,16 進行快速排序 首元素為基準 第二趟排序結果是 正確答案 b 你的答案 c 錯誤 18 31 16 47 57 91 96 83 16 31 18 47 57 91 96 83 16 18 31 47 57 91 96 83 16 18 31 4...

資料結構 排序 快速排序

快速排序在平均情況下是效果最好的排序演算法 每趟子表的排序都是從兩頭向中間交替逼近,接下來舉乙個例子 sorry,上面這個圖的6和5的位置畫反啦,快速排序全域性有序,一趟排序便可以確定基準值的最終位置 類別排序方法 最好時間 最壞時間 平均時間 空間複雜度 穩定性序列特徵 適用於插入排序 直接插入排...

資料結構排序 快速排序

快速排序是對氣泡排序的改進,它的基本思想是通過一趟排序將資料分成兩部分,一部分中的資料都比另一部分中的資料小,再對這兩部分中的資料再排序,直到整個序列有序,如下圖所示。快排的遞迴實現 1 include 2 include 3 4intn 5 6 7 分割使樞軸記錄的左邊元素比右邊元素小8 9int...