快速排序算法是一种基于交换的高效的排序算法,它采用了分治法的思想:
1、从数列中取出一个数作为基准数(枢轴,pivot)。
2、将数组进行划分(partition),将比基准数大的元素都移至枢轴右边,将小于等于基准数的元素都移至枢轴左边。
3、再对左右的子区间重复第二步的划分操作,直至每个子区间只有一个元素
/******************
快速排序
****************************/
template<class T>
int partition(T arr[],int start,int end)
{
T pivot = arr[start];
while(start < end)
{
while(start<end && arr[start]<=arr[end])
end--;
if (start<end)
{
swap(arr[start++],arr[end]);
}
while(start<end && arr[start]<=arr[end])
start++;
if (start<end)
{
swap(arr[start],arr[end--]);
}
}
//arr[start]=pivot;
return start;
}
template<class T>
void quicksort(T arr[],int start,int end)
{
if (start>=end)
{
return;
}
else
{
int pivotpos = partition(arr,start,end);
quicksort(arr,start,pivotpos-1);
quicksort(arr,pivotpos+1,end);
}
}

1065

被折叠的 条评论
为什么被折叠?



