快速排序 遞迴和非遞迴的實現

2021-07-03 15:44:05 字數 896 閱讀 4148

快速排序主要就是partition的操作。

/* 遞迴的實現。a -->要排序的陣列, s  --> 開始位置, e  --> 結束位置 */

void quicksort(int arr, int s, int e)

}

//普通劃分操作。以最後乙個元素 arr[e]作為基準

intpartition(int arr, int s, int e)

}swap(arr[e], arr[i+1]);

return i+1;

}

將序列劃分為三部分:小於基準元素(i指向最後乙個小於基準的元素)、大於基準元素((i,j))和未知元素部分(j指向第乙個未知元素)。

//隨機化的劃分操作。已最後乙個元素 arr[e]作為基準

int partitionrandom(int arr, int s, int e)

}swap(arr[e], arr[i+1]);

return i+1;

}

//劃分操作的 第二種實現

int partition2(int * arr, int start, int end)

arr[start] = arr[j];

arr[j] = pivot;

return j;

}

//快速排序的非遞迴實現

void quicksortiterative(int arr,int s, int e)

if(end > mid+1)

}}

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

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

遞迴和非遞迴快速排序 Python實現

快速排序的原理是基於分治策略,設定乙個基準線 pivot 將資料分為兩部分,不斷分治實現資料的排序 由實現原理容易得到遞迴 如下 def qsort arr ifnot len arr return else 在這裡以第乙個元素為基準線 pivot arr 0 left qsort x for x ...

快速排序非遞迴實現

再來談談快速排序,遞迴實現與非遞迴實現。遞迴實現是基本的排序 非遞迴實現需要用stack來儲存 low,high 的排序對,一部分一部分的排序。直接上程式了 標頭檔案 quick test.h include include include include include include typed...