一下是我写的快排的源码,欢迎指正:
template<typename value_type>
int get_pivot_index(value_type * array, int start, int end)
{
value_type pivot = array[start];
while (start < end)
{
while( (start<end) && (array[end]>pivot) )
--end;
array[start] = array[end];
while( (start<end) && (array[start]<pivot) )
++start;
array[end] = array[start];
}
// Now start == end !
array[start] = pivot;
return start;
}
template <typename value_type>
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);
}
节目预告,明天出堆排的代码。呵呵。