题目
输入:
代表参与排序的数字个数
依次输入参与排序的数字
输出:
排序结果
代码
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include <string.h>
int a[101],n;
//左下标,右下标输入(作者很好,下表和序号设计为一样的)
void quicksort(int left,int right)
{
int i,j,t,temp;//模仿,别bb||猜想作用是方便
//未知用途???
if(left>right)
return;
//temp存着pivot下标
temp=a[left];
//i,j 是用来移动的哨兵
i=left;
j=right;
//主要是j向左,i向右,然后调换
//碰头,离开循环
while(i!=j)
{
//第二个是为了两人碰头时判断失败,直接跳过
while(a[j]>=temp&&i<j)
{
j--;
}
//类似,第二个为了碰头时跳过
while(a[i]<=temp&&i<j)
{
i++;
}
//为了碰头时跳过
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
quicksort(left,i-1);
quicksort(i+1,right);
}
//猜想应该从int mian调用顺序书写
int main()
{
int i,j,t;
//读入排序数字个数
scanf("%d",&n);
//输入,给a[1]~a[n]赋值
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
//快速排序
quicksort(1,n);
//输出排序后的数字
for(i=1;i<=n;i++)
{
printf("%d",a[i]);
}
system("pause");
return 0;
}