2011 4 15 快排演算法,堆排演算法

2021-05-25 01:38:22 字數 715 閱讀 5319

template

int get_pivot_index(value_type * array, int start, int end) 

value_type pivot = array[start];

while (start < end)

while( (startpivot) ) 

--end;

array[start] = array[end];

while( (start++start;

array[end] = array[start];

// now start == end !

array[start] = pivot;

return start;

template

void quick_sort(value_type *array, const int &start, const int &end) {

assert(null != array);

if (start >= end)

return;

int pivot_index = get_pivot_index(array, start, end);

quick_sort(array, start, pivot_index-1);

quick_sort(array, pivot_index+1, end);

節目預告,明天出堆排的**。呵呵。

演算法基礎2 快排 堆排 桶排

整理於左神的演算法課 一。快排 荷蘭國旗問題 時間複雜度o n logn 額外空間複雜度o logn 給定乙個陣列arr,和乙個數num,請把小於num的數放在陣列的 左邊,等於num的數放在陣列的中間,大於num的數放在陣列的右邊。要求額外空間複雜度o 1 時間複雜度o n 快排的實現 publi...

快排和堆排

一 快速排序 最常用的排序演算法,速度通常也是最快的。時間複雜度 o nlogn 最壞 o n 2 空間複雜度 o nlgn 不穩定 比如 5 3 3 4 3 8 9 10 11 這個序列,在中樞元素5和3交換就會把元素3的穩定性打亂 實現原理 快排主要是通過選擇乙個關鍵值作為基準值。比基準值小的都...

快排 歸併 堆排

快排 include include include includeusing namespace std void quicksort vector a,int l,int r 終止遞迴的條件,子串行長度為1 int mid low high low 2 取得序列中間的元素 mergesort a...