2012-09-27 31 views
0

我想创建一个插入排序,但我不能得到任何进一步。 我解决它在我的方式,直到我让出界,在第二个“为命令”至极我不能解决。林不知道如果 我是在正确的道路,但我想保持溶液简单=)C#插入排序1xforeach 2xfor

感谢您的帮助。

int arrayzähler = 0; 
int[] Speicherarray = new int[randomarray.Length]; 
//ausgabearray[1] = randomarray[1]; //für vergleich 

foreach (int wert in randomarray) 
{ 
    if (wert == randomarray[0]) 
    { 
     Speicherarray[0] = wert; 
     ausgabearray[0] = wert; 
     arrayzähler++; 
     continue; // erster wert = ausgabearray[0] 
    } 

    arrayzähler++; 

    for (int i = arrayzähler - 1; i >= arrayzähler - 1; i--) 
    { 
     for (int a = arrayzähler - 2; a >= arrayzähler - 2; a--) 
     { 
      if (Speicherarray[i] < Speicherarray[a]) 
      { 
       Speicherarray[a] = Speicherarray[a + 1]; 
      } 
      else if (Speicherarray[i] >= Speicherarray[a]) 
      { 
       Speicherarray[a] = wert; 
       ausgabearray[i] = Speicherarray[i]; 
      } 
     } 
    } 
} 
+2

你真的,如果你指望英语Q&A板的帮助不应使用德国可变和类名;) – basti

+0

OK对不起,它wount发生在未来=) – Niko

回答

2

这是确切的编码插入排序,

public void Sort(int[] collection) 
    { 
     int inner, temp; 
     for (int i = 1; i < collection.Length; i++) 
     { 
      temp = collection[i]; 
       inner = i; 
      while (inner > 0 && collection[inner - 1] >= temp) 
      { 
       collection[i] = collection[inner - 1]; 
       --inner; 
      } 
      collection[inner] = temp; 
     } 
     Console.WriteLine("Printing Insertion Sorted Items"); 
     Print();       
    } 
+0

嘿感谢您的awnser我明白这个方法!谢谢!!但是你能把这个发给我吗?我试图说服它,但我失败了..- .- – Niko

2

看这句话

for (int i = arrayzähler-1; i >= arrayzähler -1; i--) 

不管你arrayCounter是什么,这个循环会一直执行恰好1次。
这同样适用于内循环。

+0

好的。我理解,但我不知道我应该怎么回事做到这一点。我的意思是outter循环应该是新的数字,这是给出的。而内部循环是针对比新的数字更小的旧数字。我没有更多的想法来解决我的问题。 – Niko