实现思路一:
int Partition(int data[], int length, int start, int end)
{
if (data==NULL || length<1 || start<0 || end>=length)
throw new exception("Invalid Parameters!");
int index = start + rand()%(end-start+1);
Myswap(data[index], data[end]);
int small = start - 1;
for (index=start; index<end; ++index )
{
if (data[index] < data[end]) //找比基值小的
{
++small;
if (small != index)
Myswap(data[index],data[small]);
}
}
++small; //分界处
Myswap(data[small], data[end]);
return small;
}
void QuickSort(int data[], int length, int start, int end)
{
if (start==end)
return;
int index = Partition(data,length,start,end);
if (index>start)
QuickSort(data,length,start,index-1);
if (index<end)
QuickSort(data,length,index+1,end);
}

本文详细介绍了一种高效的排序算法——快速排序。通过递归的方式将数组分为较小和较大的两个子数组,并对子数组进行同样的操作来完成整个数组的排序。文章提供了快速排序的实现代码,并解释了关键步骤。
18万+

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



