以EOF結束輸入 PTA 7-12 排序(數組)

7-12 排序(數組) (5分)

輸入若干整數到一個數組中,把它從小到大排序後輸出。

輸入格式:
輸入若干整數,用EOF結束。

輸出格式:
排序後的數組

數與數間用一個空格隔開。

輸入樣例:

3 5 7 7 2 1 6

輸出樣例:

1 2 3 5 6 7 7 

思路:
唯一的難點就是怎麼以EOF結束了

  1. while(cin>>x>>y){}
  2. while(scanf("%d %d",&x,&y)){}

但是對於這個題,如果輸入一個數,以上兩種方法肯定會出錯 對於這個題來說,要用下邊這個

  1. 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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章