void partition(int arr[],int n)
{
int temp=arr[0];
int i=0,j=n-1;
while(i<j){
while(i<j&&arr[j]>=temp)
--j;
if(i<j) //当arr[j]<temp时,跳出while循环,用arr[j]的值覆盖arr[i]
arr[i++]=arr[j];//等价于arr[i]=arr[j]; i++;
while(i<j&&arr[i]<temp)
++i;
if(i<j)
arr[j--]=arr[i];
}
arr[i]=temp;
}
本文深入探讨了快速排序中关键的分区算法实现细节。通过一个简洁的C风格伪代码示例,展示了如何通过一趟扫描将待排序的数据分割成两部分,使得左边的数据都小于或等于基准值,右边的数据都大于或等于基准值。这一过程是快速排序效率的核心所在。
5366

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



