正宗快排
来源:互联网 发布:centos git 使用 编辑:程序博客网 时间:2024/04/28 16:25
#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;
}
0 0