2017-07-30 8 views
0

私はこのバブルソートを最初に作成しようとしています。これが私の持っているものです。 何らかの理由で、配列が奇妙な形で印刷されています。 これは私が知る限り、文字でソートする必要があります。私のバブルソートで配列が正しくソートされないのはなぜですか?

LINQまたはArray.Sort()を使用せずにバブルソートを正しく行うにはどうすればよいですか。これは学校用ですので、バブルソートアルゴリズムを実行する必要があります。

ここに、プリントアウトのイメージがあります。バブルソートのために

Here is an image of what it prints out.

class Program 
    { 
     static string[] animals = new string[] { "cat", "elephant", "tiger", "fish", "dolphin", "giraffe", "hippo", "lion", "rat", "string ray" }; 

     static void Main(string[] args) 
     { 
      BubbleSort(); 
      Console.ReadLine(); 
     } 

     private static void BubbleSort() 
     { 
      bool swap; 
      string temp; 

      string[] animals = new string[] { "cat", "elephant", "tiger", "fish", "dolphin", "giraffe", "hippo", "lion", "rat", "string ray" }; 

      for (int index = 0; index < (animals.Length - 1); index++) 
      { 
       if (string.Compare(animals[index], animals[index + 1], true) < 0) //if first number is greater then second then swap 
       { 
        //swap 
        temp = animals[index]; 
        animals[index] = animals[index + 1]; 
        animals[index + 1] = temp; 
        swap = true; 
       } 
      } 

      foreach (string item in animals) 
      { 
       Console.WriteLine(item); 
      } 
     } 
    } 
+1

配列内の正しい位置に単一の要素をバブリングするだけです(末尾に_meant_があると仮定すると、それより小さい場合は比較演算子を逆にします)。バブルソートでは、配列を複数回通過する必要があります。 –

+0

私はCompareToをCompareToに切り替えて、foreachループですべてを追加しました。これで、2番目の値を除くすべてのrghtが出力されます。 –

答えて

1

あなたがいない、一度はなく、複数回の配列を渡しているので、次の2つのネストされたループを必要としています。

private static void BubbleSort() 
    { 
     string temp; 

     string[] animals = new string[] { "cat", "elephant", "tiger", "fish", "dolphin", "giraffe", "hippo", "lion", "rat", "string ray" }; 

     for (int i = 1; i < animals.Length; i++) 
     { 
      for (int j = 0; j < animals.Length - i; j++) 
      { 
       if (string.Compare(animals[j], animals[j + 1], StringComparison.Ordinal) <= 0) continue; 

       temp = animals[j]; 
       animals[j] = animals[j + 1]; 
       animals[j + 1] = temp; 
      } 
     } 

     foreach (string item in animals) 
     { 
      Console.WriteLine(item); 
     } 
    } 

PS:次の時間、もう少し検索を使用して、上記のコードはhttp://stackoverflow.com/questions/38624840/bubble-sort-string-array-c-sharpから採取されたほぼ100%です。

+0

@CRoemheldは言った: "少し長い検索を使用してください" :)幸運 –

関連する問題