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...