2015-11-29 34 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));