2016-05-03 12 views
0

ich einige meine Freizeit verwendet, um einen kleinen Sortiermechanismus zu kodieren: ein Blase Sortiermechanismus, hier ist das, was ich kam mit:Am effizientesten Blase Art Mechanismus

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; 
    } 
} 

Wie Sie sehen können, es isn‘ t etwas Phantasie, aber es bringt den Job fertig. Was meine Frage ist: Ist das eine "effiziente" Art, einen Blasensortiermechanismus zu programmieren, oder kann ich etwas verbessern?

+2

Diese Frage sollte zu [CodeReview] gehören (ht tp: //codereview.stackexchange.com/). – Xiaoy312

+2

Ich stimme zu, diese Frage als Off-Topic zu schließen, da sie auf codereview.stackexchange.com gehört. –

+0

Warum also das Rad neu erfinden? benutze eine Liste und sortiere sie einfach() oder verwende Array.Sort() ... – Gusman

Antwort

0

Try this:

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; 
    } 

Einige Bemerkungen:

  • Sie das Rad nicht neu erfinden, und Ihr Code machen sehr gut lesbar und Ihre Absicht klar
  • Ich glaube nicht, Ihre Blase Code Implementierung ist eigentlich O (N^2), könnte aufgrund der While-Schleife größer sein
Verwandte Themen