2012-04-06 6 views
-4

Mein Sortiercode nicht korrektes Ergebnis geben wird, die angegebene Liste nicht Sortint richtig, während ich den Fehler nicht bin immer überprüfen Sie bitte,Bubble Sorting nicht korrekte Ergebnis Code C#?

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

Dies ist keine Code-Review-Website. [FAQ] (http://stackoverflow.com/faq#questions) – Reniuz

+2

kümmern, um Ihren Code zu formatieren? –

+2

Ihr Code * stimmt * die Eingabe richtig ab. Aber die 'Console.WriteLine' Aufrufe sind damit nicht verbunden. –

Antwort

0

Was Sie auf dem Laufenden keine Umsetzung der Bubble Sort algorithm ist. Sie haben vergessen zu loopen, während keine Nummer mehr vertauscht ist. Hier ist eine Bubble-Sort-Implementierung geschrieben by John Skeet. Die stillGoing Kontrolle ist, was zumindest in Ihrer Implementierung fehlt:

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

ich kann nicht, Ihren Code verstehen und ich weiß nicht, C#. Aber wie auch immer, hier ist die Sortierlogik für Blasensortieren (geschrieben in 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; 
      } 
     } 
    } 

und Sie können sich auch auf: www.sorting-algorithms.com/bubble-sort

0

die Console.Write aus den verschachtelten Schleifen entfernen. Platziere console.write außerhalb der verschachtelten Schleifen in einer neuen for-Schleife oder foreach. dann erhalten Sie die richtige Reihenfolge. Ansonsten ist die Logik der Bubble-Sortierung richtig