#include <stdio.h>
#include <stdlib.h>
void swap(int & a,int & b)
{
int temp=a;
a=b;
b=temp;
}
int QuickSort_Partition(int A[],int p, int r)
{
//随机选值
int s_max=rand()%(r-p+1)+p;//随机数生产后要加上p
swap(A[s_max],A[r]);//随机数生成后注意交换
int max=A[r];
int i=p-1;
int j=p;
while(j<r)
{
if(A[j]<=max)
{
swap(A[j],A[++i]);
}
j++;
}
swap(A[r],A[++i]);//注意交换
return i;
}
void QuickSort(int A[],int p, int r)
{
if(p>=r) return;
int q=QuickSort_Partition(A,p,r);
QuickSort(A,p,q-1);
QuickSort(A,q+1,r);
}
int main()
{
int A[]={5,4,7,6,3,8,11,98,44,33};
QuickSort(A,0,9);
printf("\n");
for(int i=0;i<=9;i++)
printf("%d\t",A[i]);
printf("\n");
}
需要几个地方注意,已经写在上面了,
本文详细介绍了快速排序算法的实现过程,并提供了完整的C语言代码示例。文章重点讲解了随机选取基准值的方法以及分区函数的实现细节。
621

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



