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;
}