總網頁瀏覽量

2015年11月13日 星期五

[C] Quiz. #1b 選擇排序法 Selection Sort method





Quiz. #1b 選擇排序法
成績: 5 / 倒扣: 0.8

       上課時我們談過 選擇排序法, 基本方法就是在序列中找到最小的數值, 和第一個元素交換, 然後用同樣的方法排第二個到第 n 個元素的部份序列, 請由輸入串流讀取一個整數序列: b1 b2, b3, ..., bn, 以選擇排序法排序並且列印出排序的結果, 其中 1 ≤ n ≤ 200。


輸入測試資料:

2↵
5 22 2 71 30 18↵
4 100 -51 9 17↵


2 代表有兩個測試案例, 接下來有兩列資料, 分別代表一個測試案例 每一列第一個數字代表這個測試案例的整數序列裡有幾個數字, 接下來 22 2 71 30 18 就是這個數列的內容。

輸出測試資料:

22 2 71 30 18↵
2 22 71 30 18↵
2 18 71 30 22↵
2 18 22 30 71↵
↵
100 -51 9 17↵
-51 100 9 17↵
-51 9 100 17↵
-51 9 17 100↵



每一個測試案例請由原始資料開始,一列一列將排序過程中所有不同順序的序列列印出來,兩個案例中間有一列空白列。


----------------------------------------------------------------------------------------------------------
Selection_Sort_method.cpp

#include <stdlib.h>
#include <cstdio>  

int main(void){
    int in = 0;
    int d[200];
    scanf("%d",&in);

    for(int i = 0 ; i < in ; i++){
        int num=0;
        scanf("%d",&num);
        for(int j = 0 ; j < num ; j++){
            scanf("%d",&d[j]);
        }

        for(int k = 0 ; k < num ; k++){
            if(k<num-1)
                printf("%d ",d[k]);
            else
                printf("%d",d[k]);
        }printf("\n");


        for(int x = 0 ; x < num-1 ; x++){
            int s = d[x];
            int sp = x;


            int c = 0;
            for(int y = x+1 ; y < num ; y++){
                if(d[y]<s){
                    s = d[y];
                    sp = y;
                    c++;
                }
            }
            if(c>0){
                int tmp = d[sp];
                d[sp] = d[x];
                d[x] = tmp;  
                for(int k = 0 ; k < num; k++){
                if(k<num-1)
                    printf("%d ",d[k]);
                else
                    printf("%d",d[k]);
                }printf("\n");
            }
        }if(i<in-1)
            printf("\n");

    }

    system("pause");
    return 0;
}
----------------------------------------------------------------------------------------------------------

注意的地方
1. 每列資料最後一比後面沒有" "空格.
2. 最後一比資料結束後不用換行
3. 只要印出有變化的那次舊好, 所以要放些修改
    我是因為有比較前後項有無大小不同, 有的話才改變,
    在放個c, 所以之後列印就依照這個c 有沒有大於1判斷.
    但是代表之前要先印一次啟始狀態的.


------------------------
input:
4
15 40858 38107 46150 26209 64727 6530 61498 65357 19520 56128 880 1501 8961 7726 60859
20 60959 62155 5727 47808 17572 54465 25195 10569 34680 52593 61269 429 33988 18093 12996 3812 30649 10878 7103 14120
10 -819 1400 12155 17152 -3659 4091 17258 5639 20580 -8221
4 1 2 3 4


------------------------

40858 38107 46150 26209 64727 6530 61498 65357 19520 56128 880 1501 8961 7726 60859-1
880 38107 46150 26209 64727 6530 61498 65357 19520 56128 40858 1501 8961 7726 60859-2
880 1501 46150 26209 64727 6530 61498 65357 19520 56128 40858 38107 8961 7726 60859-3
880 1501 6530 26209 64727 46150 61498 65357 19520 56128 40858 38107 8961 7726 60859-4

880 1501 6530 7726 64727 46150 61498 65357 19520 56128 40858 38107 8961 26209 60859-5
880 1501 6530 7726 8961 46150 61498 65357 19520 56128 40858 38107 64727 26209 60859-6
880 1501 6530 7726 8961 19520 61498 65357 46150 56128 40858 38107 64727 26209 60859-7

880 1501 6530 7726 8961 19520 26209 65357 46150 56128 40858 38107 64727 61498 60859-8
880 1501 6530 7726 8961 19520 26209 38107 46150 56128 40858 65357 64727 61498 60859-9
880 1501 6530 7726 8961 19520 26209 38107 40858 56128 46150 65357 64727 61498 60859-10
880 1501 6530 7726 8961 19520 26209 38107 40858 46150 56128 65357 64727 61498 60859-11
880 1501 6530 7726 8961 19520 26209 38107 40858 46150 56128 60859 64727 61498 65357-12

880 1501 6530 7726 8961 19520 26209 38107 40858 46150 56128 60859 61498 64727 65357-13

60959 62155 5727 47808 17572 54465 25195 10569 34680 52593 61269 429 33988 18093 12996 3812 30649 10878 7103 14120-1
429 62155 5727 47808 17572 54465 25195 10569 34680 52593 61269 60959 33988 18093 12996 3812 30649 10878 7103 14120-2
429 3812 5727 47808 17572 54465 25195 10569 34680 52593 61269 60959 33988 18093 12996 62155 30649 10878 7103 14120-3
429 3812 5727 7103 17572 54465 25195 10569 34680 52593 61269 60959 33988 18093 12996 62155 30649 10878 47808 14120-4
429 3812 5727 7103 10569 54465 25195 17572 34680 52593 61269 60959 33988 18093 12996 62155 30649 10878 47808 14120-5
429 3812 5727 7103 10569 10878 25195 17572 34680 52593 61269 60959 33988 18093 12996 62155 30649 54465 47808 14120-6
429 3812 5727 7103 10569 10878 12996 17572 34680 52593 61269 60959 33988 18093 25195 62155 30649 54465 47808 14120-7
429 3812 5727 7103 10569 10878 12996 14120 34680 52593 61269 60959 33988 18093 25195 62155 30649 54465 47808 17572-8
429 3812 5727 7103 10569 10878 12996 14120 17572 52593 61269 60959 33988 18093 25195 62155 30649 54465 47808 34680-9
429 3812 5727 7103 10569 10878 12996 14120 17572 18093 61269 60959 33988 52593 25195 62155 30649 54465 47808 34680-10
429 3812 5727 7103 10569 10878 12996 14120 17572 18093 25195 60959 33988 52593 61269 62155 30649 54465 47808 34680-11
429 3812 5727 7103 10569 10878 12996 14120 17572 18093 25195 30649 33988 52593 61269 62155 60959 54465 47808 34680-12
429 3812 5727 7103 10569 10878 12996 14120 17572 18093 25195 30649 33988 34680 61269 62155 60959 54465 47808 52593-13
429 3812 5727 7103 10569 10878 12996 14120 17572 18093 25195 30649 33988 34680 47808 62155 60959 54465 61269 52593-14
429 3812 5727 7103 10569 10878 12996 14120 17572 18093 25195 30649 33988 34680 47808 52593 60959 54465 61269 62155-15
429 3812 5727 7103 10569 10878 12996 14120 17572 18093 25195 30649 33988 34680 47808 52593 54465 60959 61269 62155-16

-819 1400 12155 17152 -3659 4091 17258 5639 20580 -8221-1
-8221 1400 12155 17152 -3659 4091 17258 5639 20580 -819-2
-8221 -3659 12155 17152 1400 4091 17258 5639 20580 -819-3
-8221 -3659 -819 17152 1400 4091 17258 5639 20580 12155-4
-8221 -3659 -819 1400 17152 4091 17258 5639 20580 12155-5
-8221 -3659 -819 1400 4091 17152 17258 5639 20580 12155-6
-8221 -3659 -819 1400 4091 5639 17258 17152 20580 12155-7
-8221 -3659 -819 1400 4091 5639 12155 17152 20580 17258-8
-8221 -3659 -819 1400 4091 5639 12155 17152 17258 20580-9

1 2 3 4















沒有留言:

張貼留言