昇順のプログラムについて、色々わかりませんでした


昇順のプログラムの一部を下に記載します。

[code]

    void sort(int a[],int n)
    {
        int i,j,min,t;
        i=0;
        while(i<n){
            min=i;
            j=i+1;
            while(j<n){
                if(a[j]<a[min]){
                    min=j;
                }
                j=j+1;
            }
            t=a[i],a[i]=a[min],a[min]=t;
            i=i+1;
        }
    }
    
[/code]

まず一つ目は、void sort(int a[],int n)のint nが何を意味するのかがわかりません（int
a[]はおそらくリストを意味するのだと思いました。）

2つ目は、int
i,jの関係について、iは単純にリストの数字についてを言っており、jはリスト番号のことを言っているのだと思いますが、上記の10行目についてmin=a[j]ではいけないのでしょうか。

３つ目は、j=i+1の意味を知りたいです。

後半の意味は全くわからないので、とりあえず、上記の3つの意味についてを知りたいです。それから後半の意味を考えたいです。




  1. `int a[]`は他言語ではリストと言ったりもしますが、`C`言語では配列でしょう。  
そして`int n`は渡された配列(`int a[]`)の長さ(要素数)です。  
文字の配列ならば、最後に0x00を入れることで終端を表しますが、ここで渡される`int
a[]`は`int`の配列なので、0は1つの有効な値でしょうから、それは使えません。  
(仕様として1以上の値の配列であるとすることも出来ますが、あまり使わないと思われます)

  2. `i`と`j`は両方ともソートの比較処理の対象を指す、配列のインデックスです。  
同様に、`min`も最小値を指すインデックスです。最小値そのものを保持しているのでは無いので、`min=a[j]`ではいけません。`min=a[j]`はインデックスではなく値を取得する処理です。

  3. `j = i + 1`は大小比較のためのもう一方の値のインデックスを`i`(開始位置)の1つ次に設定しています。  
`j = i`としても自分自身なので処理出来ますが、比較処理を1個増やすよりは良いでしょう。

