2016-05-03 24 views
0

私は少し並べ替えメカニズムコーディングする暇な時間の一部を使用:バブルソートメカニズム、ここでは私が思いついたものです:あなたが見ることができるように最も効率的なバブルソートメカニズム

public class BubbleSort 
{ 
    private bool _numbersAreSorted = false; 

    public float[] Sort(float[] _list) 
    { 
     float num1; 
     float num2; 

     while (!_numbersAreSorted) 
     { 
      _numbersAreSorted = true; 
      for (int i = 0; i < _list.Length - 1; i++) 
      { 
       num1 = _list[i]; 
       num2 = _list[i + 1]; 
       if (num1 > num2) 
       { 
        _list[i] = num2; 
        _list[i + 1] = num1; 
        i--; 
        _numbersAreSorted = false; 
       } 
      } 
     } 

     return _list; 
    } 
} 

、それはにISN何か幻想的だが、それは仕事が終わったことになる。私の質問は:これは、バブルソートメカニズムをプログラミングする「効率的な」方法ですか、それともいくつか改善することができますか?

+2

この質問は[CodeReview](ht tp://codereview.stackexchange.com/)。 – Xiaoy312

+2

codereview.stackexchange.com –

+0

に属しているので、この質問を議論の対象外とすることにしました。 Listを使用し、Sort()またはArray.Sort()を使用してください。 – Gusman

答えて

0

このお試しください:私はあなたのバブルのコードを考えていない

  • 車輪の再発明をし、あなたのコードは非常に読みやすくはいけないと、あなたの意思
  • クリア:

    public float[] Sort(float[] list) { 
         for (int i = 0; i < list.Length-1; i++) 
         { 
          for (int j = i+1; j < list.Length; j++) { 
           if (list[i] > list[i + 1]) 
           { 
            float temp = list[i]; 
            list[i] = list[i + 1]; 
            list[i+1] = temp; 
           } 
          } 
         } 
    
         return list; 
        } 
    

    いくつかの発言を実装は実際にはO(N^2)ですが、whileループのために大きくなる可能性があります

関連する問題