#include<stdio.h>
int arr[100000];
void change(int a[],int hign,int low)
{
int temp = a[hign];
a[hign] = a[low];
a[low] = temp;
}
int sort(int low, int high) {
int key = arr[low];//基准位
while (low < high) {
while (arr[high] >= key && low < high) {
high--;
}
change(arr,high,low);
while (arr[low] <= key && low < high) {
low++;
}
change(arr,high,low);
}
return high;
}
int main()
{
int i = 0;
int j = 0;
int middle = 0;
for(i=0;i<100000;){
scanf("%d",&arr[i++]);
if(getchar()=='\n')
{
break;
}
}
middle = sort(0, i - 1);
for(j = 0; j < i;j++){
if(j == i-1)
{
printf("%d\n",arr[j]);
}
else
{
printf("%d ",arr[j]);
}
}
if(0 < middle-1)
{
sort(0, middle - 1);
}
if(middle + 1 < i-1)
{
sort(middle + 1, i - 1);
}
for(j = 0; j < i;j++){
if(j == i-1)
{
printf("%d\n",arr[j]);
}
else
{
printf("%d ",arr[j]);
}
}
return 0;
}
快速排序
最新推荐文章于 2023-07-12 13:07:43 发布