2016-04-04 14 views
-3

私は、挿入ソートを使用して数字のリストを注文するプログラムを書いています。理解できないことがあります。挿入ソート

int[] a = { 5, 3, 8, 2, 1 }; 

    for (int i = 0; i < 4; i++) 
    { 
     int key = a[i]; 
     int j = i +1; 
     int nextElement = a[j]; 

      if (nextElement < key) 
      { 
       swap(ref nextElement, ref key); 
      } 
      else 
      { 

      } 
    } 
    for (int i =0;i<a.Length;i++) 
    { 
     Console.WriteLine("{0}", a[i]); 
    } 
} 

static void swap(ref int x, ref int y) 
{ 
    int temp; 
    temp = x; 
    x = y; 
    y = temp; 
} 

これまで私が書いたことですが、アルゴリズムの実装方法を実際に理解するのに問題があります。以前の要素を見て要素を並べ替えるだけですか?

+3

コードのスクリーンショットを投稿しないでください。代わりに、コードをコピーしてポストに直接貼り付けます。人々に実際に反応させたい場合は、問題のあるものをさらに詳しく説明する必要があります。 –

+0

修正済みです。 – Jahambo99

+0

特に問題は何ですか?あなたのコードが何をしているのか、正しく行っていないのかは不明です。 – ryanyuyu

答えて

2

a[i]a[j]ではなく、とkeyを交換しているという問題があります。 Intvalue typeです。nextElementa[i]と同じですが、変更するとnextElement - a[i]の値は変更されません。

a[i]a[j]を交換する必要があります。

if (a[i] > a[j]) {swap (ref a[i], ref a[j]); } 

それとも

void swap (int a[], int i, int j) 
{ 
    int temp = a[i]; 
    a[i] = a[j]; 
    a[j] = temp; 
} 

をパラメータとして交換するスワップ機能テイク配列とインデックスを作る。そして、あなたが

if (a[i] > a[j]) {swap (a, i, j);} 
+0

もちろん、nextElementとkeyを[i]と[j]にそれぞれ割り当てても問題ありませんか? – Jahambo99

+0

@ Ed_4434 'int'は値型なので、nextElemetの値は' a [i] 'の値と同じですが、' nextElemnt'を変更すると 'a [i]'は変更されません。 – Valentin

+0

私は見る!どうもありがとう。 – Jahambo99

0

を使用して数字を入れ替えることができます}

int main() 
{ 
    int i=0,j=0,k=0,l=0,key=0; 
    int a[20]; 

    printf("Enter the Elements to be sorted\n"); 
    for (l=0;l<=5;l++) 
     { 

      scanf("%d", &a[l]); 
     } 
    printf("the value of l is %d", l); 
    printf("The Entered array elements are \n"); 
    for(k=0;k<l;k++) 
     { 
      printf("%d",a[k]); 
     } 


    for(j=1;j<l;j++) 
     { 
      key= a[j]; 
      i= j-1; 
      while (i>=0 & a[i]>key) 
       { 
        a[i+1] = a[i]; 
        i=i-1; 
       } 

      a[i+1]=key; 
     } 
    printf("The Sorted array is \n"); 
    for (l=0;l<6;l++) 
     { 

      printf("%d", a[l]); 
     } 

が含まれます

関連する問題