2012-04-06 14 views
-4

私のソートコード、Bubble Sortingが正しい結果コードを与えられないC#?私はそれを確認してくださいエラーを取得していないですしながら、それが適切に与えられたリストをsortintされていない、正しい結果を与えていない

static void Main(string[] args) 

     { 

      List<int> a = new List<int>(new int[] { 3, 7, 6, 1, 8, 5 }); 

      int temp; 

// foreach(int i in a) 

for(int i=1; i<=a.Count; i++) 

for(int j=0; j<a.Count-i; j++) 

if (a[j] > a[j + 1]) 

{ 

temp = a[j]; 

a[j] = a[j + 1]; 

a[j + 1] = temp; 

Console.WriteLine(a[j]); 


} 

Console.Read(); 

} 
+5

これはコードレビューサイトではありません。 [FAQ](http://stackoverflow.com/faq#questions) – Reniuz

+2

あなたのコードを整形するのに気をつけますか? –

+2

あなたのコードは入力を正しくソートします*。しかし、 'Console.WriteLine'呼び出しはそれとは無関係です。 –

答えて

0

あなたが投稿するBubble Sort algorithmの実装ではありません。番号がもう交換されていないときにループするのを忘れました。ここには、by John Skeetと書かれたバブルソートの実装があります。 stillGoingチェックは、少なくともあなたの実装に欠けているものです。

public void BubbleSort<T>(IList<T> list); 
{ 
    BubbleSort<T>(list, Comparer<T>.Default); 
} 

public void BubbleSort<T>(IList<T> list, IComparer<T> comparer) 
{ 
    bool stillGoing = true; 
    while (stillGoing) 
    { 
     stillGoing = false; 
     for (int i = 0; i < list.Length-1; i++) 
     { 
      T x = list[i]; 
      T y = list[i + 1]; 
      if (comparer.Compare(x, y) > 0) 
      { 
       list[i] = y; 
       list[i + 1] = x; 
       stillGoing = true; 
      } 
     } 
    } 
} 
2

私はあなたのコードを理解することができませんでしたし、私は、C#を知りません。しかし、とにかく、バブルソートのためのソートロジックがあります(cで書かれています)。

//assuming there are n elements in the array a[] 

    for(i=0; i<n; i++) 
    { for(j=1; j<n-i; j++) 
     { if(a[j] < a[j-1]) 
      { temp = a[j]; 
       a[j] = a[j-1]; 
       a[j-1] = temp; 
      } 
     } 
    } 

とあなたも参照できます。ネストされたループからconsole.writeを削除 www.sorting-algorithms.com/bubble-sort

0

。入れ子になったループの外側に新しいforループまたはforeachでconsole.writeを配置します。 正しい注文が得られます。そうでなければ、バブルソートのロジックは正しいです。

関連する問題