2015-11-29 38 views
1

我要排序此行:陣列逗號分隔在c#輸出值

5,1,6,2,4,3

這是我的代碼:

int[] a = new int[] { 5, 1, 6, 2, 4, 3 }; 
int i, j, key; 

for (i = 1; i < 6; i++) 
{ 
    key = a[i]; 
    j = i - 1; 

    while (j >= 0 && key < a[j]) 
    { 
     a[j + 1] = a[j]; 
     j--; 
    } 

    a[j + 1] = key; 
} 

var result = string.Empty; 

for (i = 0; i < 6; i++) 
{ 
    Console.WriteLine(string.Join(",",a[i])); 
    //Console.WriteLine(string.Concat(a[i], ",")); 
} 

Console.ReadKey(); 

我想打印如下的逗號分隔輸出值

1,2,3,4,5,6

任何人都可以幫我嗎?

+2

爲什麼你不只是內置的排序?你爲什麼要打印一個循環? –

+0

@jon雙向飛輪 - 是的,我可以使用它,但我是c#的新手,所以試圖通過使用c#實現算法(插入排序),那就是y – Aishu

+2

好吧,考慮到你的問題是關於輸出而不是排序,我會*開始*通過擺脫你自己的排序 - 使用內置的一個。然後,您可以編寫自己的排序方法,作爲一個單獨的方法,一旦你已經修復了輸出部分。一次只集中一次。 –

回答

1

嘗試,

int[] a = new int[] { 5, 1, 6, 2, 4, 3 }; 
      int i, j, key; 
      var result = string.Empty; 
      for (i = 0; i < 6; i++) 
      { 
       for (j = i+1; j < 6; j++) 
       { 
        if (a[i] > a[j]) 
        { 
         key = a[i]; 
         a[i] = a[j]; 
         a[j] = key; 
        } 

       } 
       result += a[i].ToString() + ((i == 5) ? "" : ","); 
      } 

      Console.WriteLine(result); 
      Console.ReadKey(); 
1

你也可以試試這個方法:

for (i = 0; i < 6; i++) 
{ 
    Console.Write(a[i].ToString()); 
    if(i < 5) 
     Console.Write(","); 
    else 
     Console.WriteLine(); 
} 
3

你幾乎沒有在讓你的輸出你想要的方式。

String.Join方法將作爲第二個參數數組,這樣你就可以直接通過它您a沒有for循環:

Console.WriteLine(string.Join(",", a));