7-12 排序(数组) (5分)
输入若干整数到一个数组中,把它从小到大排序后输出。
输入格式:
输入若干整数,用EOF结束。
输出格式:
排序后的数组
数与数间用一个空格隔开。
输入样例:
3 5 7 7 2 1 6
输出样例:
1 2 3 5 6 7 7
思路:
唯一的难点就是怎么以EOF结束了
while(cin>>x>>y){}
while(scanf("%d %d",&x,&y)){}
但是对于这个题,如果输入一个数,以上两种方法肯定会出错 对于这个题来说,要用下边这个
while(scanf("%d",&x)=EOF){}
还是因为刚学的快排,接着用快排解~
代码:
#include <bits/stdc++.h>
using namespace std;
int a[1000];
void quickSort(int left ,int right){
int x=left,y=right;
int z=a[left];
if(x>y)return;
while (x!=y)
{
while(a[y]>=z && x<y)
y--;
while(a[x]<=z && x<y)
x++;
if(x<y)
{
swap(a[x],a[y]);
}
}
swap(a[x],a[left]);
quickSort(left,x-1);
quickSort(x+1,right);
return;
}
int main()
{
int x=0,y,z;
while(scanf("%d",&y)!=EOF)
{
a[x]=y;
x++;
}
int left = 0,right = x-1;
quickSort(left,right);
for (int i = 0; i < x; ++i) {
cout<<a[i]<<" ";
}
return 0;
}