62563


配列の値を昇順に並べ替える関数 `ssort` を以下のように作成したのですが、配列の値が昇順に並べられる様子がわかりません。

例えば `4 3 1 5 2` では、どのような順序で `1 2 3 4 5` と並べ替えられますか。

[code]

    void swap(int *x,int*y)
    {
       int tmp;
       tmp=*x;
       *x=*y;
       *y=tmp;
    }
    
    void ssort(int a[],int size)
    {
       int i,j,min;
       for(j=0;j<size-1;j++){
          min=j;
          for(i=j+1;i<size;i++){
             if(a[i]<a[min])  min=i;
          }
          swap(&a[j],&a[min]);
       }
    }
    
[/code]


CC BY-SA 4.0
2020-01-26T09:58:14.357
62558
2020-02-04T00:38:43.400
2020-02-04T00:38:43.400
3060
36412
question
c
配列の値が昇順に並べ替えられる様子を確認したい


池田茂樹さんのコメントにある通り、  
以下のように `printf()` で出力すれば、途中の様子を見ることができます。

[code]

    #include <stdio.h>
    
    void print_process(int a[], int size)
    {
       int i;
       for (i = 0; i < size; i++)
          printf("%d ", a[i]);
       printf("\n");
    }
    
    void swap(int *x,int*y)
    {
       int tmp;
       tmp=*x;
       *x=*y;
       *y=tmp;
    }
    
    void ssort(int a[],int size)
    {
       int i,j,min;
       print_process(a, size);
       for(j=0;j<size-1;j++){
          min=j;
          for(i=j+1;i<size;i++){
             if(a[i]<a[min])  min=i;
          }
          swap(&a[j],&a[min]);
          print_process(a, size);
       }
    }
    
    int main(void)
    {
        int a[5] = {4, 3, 1, 5, 2};
    
        ssort(a, 5);
    
        return 0;
    }
    
[/code]

結果は以下のようになりました。

[code]

    luna:~ % ./test                 
    4 3 1 5 2 
    1 3 4 5 2 
    1 2 4 5 3 
    1 2 3 5 4 
    1 2 3 4 5 
    luna:~ % 
    
[/code]


CC BY-SA 4.0
2020-01-26T14:43:59.517
62563
2020-01-26T14:43:59.517
5288
62558
answer