2016-03-04 23 views
0

這是我應該在控制檯中顯示高分領先者的其他聲明之一。數據來自我的文本文件,其中包含整數字符串。但我的泡泡似乎並沒有在控制檯上顯示任何東西。它只是直接迭代回覆。你可能會發現,如果我可能錯過了什麼?bubblesort矢量線逐行。整數C#

else if (menu == 2) 
{ 
    string[] allLines = System.IO.File.ReadAllLines(@"C:\temp\Highscore.txt"); 
    string temp; 
    string scoret; 

    for (int i = 0; i < allLines.Length - 1; i++) 
    { 
     for (int j = i + 1; j < allLines.Length - 1; j++) 
     { 
      allLines[i] = string.Copy(allLines[j]); 
      if (allLines[i].CompareTo(allLines[j + 1]) > 0) 
      { 
       temp = allLines[j]; 
       allLines[j] = allLines[i]; 
       allLines[i] = Convert.ToString(temp); 
      } 
      Console.WriteLine(allLines[i]); 
     } 
     Console.WriteLine(allLines[allLines.Length - 1]); 
     Console.ReadLine(); 
    } 
} 

任何人誰可以指教我我失蹤了?

+3

爲什麼不簡單地使用'Array.Sort'?我甚至不會爲執行bubblesort而煩惱。 – atlaste

+1

我同意這是一個練習,你被要求編碼氣泡排序嗎? – purpletentacle

+1

Console.ReadLine();將等待輸入 –

回答

1

你的循環看起來很奇怪,就像我在你對我發表的評論中提到的(關於你如何編制索引)。

我在LinqPad 4中做過這個,我想這是你想要的嗎?

void Main() 
{ 
string[] allLines = {"Test", "Apple", "FishBowl", "Candy Cane", "Martini", "Husky"}; 



for (int i = 0; i < allLines.Length - 1; i++) 
{ 
    for (int j = i + 1; j < allLines.Length; j++) 
    { 
     // allLines[i] = string.Copy(allLines[j]); 
     if (allLines[i].CompareTo(allLines[j]) > 0) 
     { 
      string temp = allLines[i]; 
      allLines[i] = allLines[j]; 
      allLines[j] = temp; 
     } 

    } 


} 
Console.WriteLine(allLines); 
} 

注意改變的循環和索引。

此外,刪除ReadLine語句

+0

這是正確的,文本文件中的行沒有排序。每行包含1個玩家得分。 這很奇怪,因爲WriteLine將所有行讀取爲字符串[2]。但是,控制檯輸出是System,String []。 無論我使用你的代碼。輸出仍然System.String [] 我現在解決了....... 但是,正如我以爲,我只是比較第一種類型,所以如果一個球員得分11分, 該球員是最高的高分但應該是最低的。 – Global