/*快速排序*/
/*选取数组的第一个数作为轴,从末尾的数字开始比较,当比轴小则与轴交换位置,在用轴与开头的数字进行比较,当比轴大则与轴交换位置,最终确定轴的位置。之后从轴的位置将数组分为两个部分,对各个部分重复选轴定轴的操作*/
#include <stdio.h>
int partition(int s[],int low, int high)
{
int i,j,temp;
temp=s[low];
i=low;
j=high;
while(i<j)
{
while(i<j&&temp<s[j])
{
j--;
}
s[i]=s[j];
while(i<j&&temp>s[i])
{
i++;
}
s[j]=s[i];
}
s[i]=temp;
//printf("%d\n",i);
return i;
}
int quick_sort(int s[],int low,int high)
{
int k;
if(low<high)
{
k=partition(s,low,high);
quick_sort(s,low,k-1);
quick_sort(s,k+1,high);
}
return *s;
}
int main()
{
int s[5];
int n,i;
n=5;
for(i=0;i<n;i++)
{
scanf("%d",&s[i]);
}
quick_sort(s,0,n-1);
for(i=0;i<n;i++)
{
printf("%d ",s[i]);
}
}
08-23
08-23
08-23