快速排序 遞迴與非遞迴

2021-10-10 01:35:50 字數 814 閱讀 1799

1.以中間值作為基準數

void

quick_sort

(int q,

int l,

int r)

quick_sort

(q, l, j)

;quick_sort

(q, j +

1, r)

;}

2.以第乙個/最後乙個數作為基準數

int

part_sort

(int q,

int l,

int r)

q[l]

= q[i]

; q[i]

= temp;

return i;

}void

quick_sort

(int q,

int l,

int r)

遞迴其實是乙個壓棧、出棧的過程,現如今不用遞迴,那我們就使用棧來儲存劃分區間

int

part_sort

(int q,

int l,

int r)

q[l]

= q[i]

; q[i]

= temp;

return i;

}void

quick_sort

(int q,

int l,

int r)

if(index +

1< rr)

// 右區間

}}

快速排序遞迴與非遞迴

快速排序思想 以公升序為例 在要排序的序列中選乙個基準,使它左邊的數都比它小,右邊的數都比它大。具體步驟 1 區間選乙個key,可以選區間右邊界的那個數 2 讓begin從區間左邊界開始往後找大於key的數,找到後停下來,再讓end從區間右邊界 1開始往前找小於key的數,找到後讓它和begin找的...

快速排序 遞迴與非遞迴

快速排序演算法,簡稱快排,是最實用的排序演算法,沒有之一,各大語言標準庫的排序函式也基本都是基於快排實現的。快排基本思路 快速排序基本思想是 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可...

快速排序實現(遞迴 非遞迴)

首先是劃分演算法,假設每次都以第乙個元素作為樞軸值,進行一趟劃分 int partition int a,int low,int high a low pivot 將樞軸值元素置於最終位置 return low 第乙個while迴圈裡的 還可以採用如下形式 while low high a high...