資料結構 快速排序

2021-10-02 08:45:27 字數 1003 閱讀 4682

其基本思想是在序列中找乙個元素作為基準值,將排序集合分割為兩個子串行,左子串行中的所有元素都小於基準值,右子串行中的所有元素均大於基準值,再將左右子樹重複此操作,知道所有元素都排列在相應位置

源**獲取:

討論前後指標法

序列中分別在前後定義兩個指標,將一開始開頭指標指向的值作為基準值,

後指標開始向前遍歷,遍歷到比基準值小的值時,當前位置的值與基準值交換,

前指標開始向後遍歷,遇到比基準值大的值時,當前位置與基準值交換,換前指標向前遍歷,反覆交替,直到前指標與後指標交叉。

此時將序列分為左右兩個子樹,基準值為根,左子樹均小於基準值,右子樹均大於基準值

//交換的函式

void

dealsort

(int

*arr,

int start,

int end)

int flag =1;

int i = start, j = end;

while

(iif(flag ==1)

else

}dealsort

(arr, start, i -1)

;dealsort

(arr, i +

1, end)

;}通過遞迴操作完成二叉樹建立。遞迴出口設定為 前指標》=後指標時。flag用於前後指標遍歷操作的轉換,每次交換後flag取反,就可以實現前後指標交替遍歷

資料結構 排序 快速排序

對序列 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...