2012-09-27 50 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