#include<stdio.h>
int partition(int a[],int left,int right)
{
int i=left;
int j=right;
int temp=a[i];
while(i<j)
{
while(i<j && a[j]>=temp)
j--;
if(i<j)
a[i]=a[j];
while(i<j && a[i]<=temp)
i++;
if(i<j)
a[j]=a[i];
}
a[i]=temp;//每轮下来指针处会有一个重复的数字,此处跳出循环时,i=j,写a[j]=temp也可
return i;
}
void quickSort(int a[],int left,int right)
{
int dp;
if(left<right)
{
dp=partition(a,left,right);
quickSort(a,left,dp-1);
quickSort(a,dp+1,right);
}
}
int main()
{
int a[9]={5,4,9,1,7,6,2,3,8};
quickSort(a,0,8);
for(int i=0;i<9;i++)
{
printf("%d ",a[i]);
}
return 0;
}
int partition(int a[],int left,int right)
{
int i=left;
int j=right;
int temp=a[i];
while(i<j)
{
while(i<j && a[j]>=temp)
j--;
if(i<j)
a[i]=a[j];
while(i<j && a[i]<=temp)
i++;
if(i<j)
a[j]=a[i];
}
a[i]=temp;//每轮下来指针处会有一个重复的数字,此处跳出循环时,i=j,写a[j]=temp也可
return i;
}
void quickSort(int a[],int left,int right)
{
int dp;
if(left<right)
{
dp=partition(a,left,right);
quickSort(a,left,dp-1);
quickSort(a,dp+1,right);
}
}
int main()
{
int a[9]={5,4,9,1,7,6,2,3,8};
quickSort(a,0,8);
for(int i=0;i<9;i++)
{
printf("%d ",a[i]);
}
return 0;
}
本文介绍了一个简单的快速排序算法实现过程,通过递归调用partition函数将数组分为两部分,并不断缩小排序范围直到整个数组有序。最后通过一个示例展示了排序后的结果。
1405

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



