2017-03-07 112 views
0

我想爲數組做選擇排序。但由於某種原因,它不會排序。我的代碼:C#簡單選擇排序

public static void SelectionSort(DataArray ar) 
    { 
     int n = ar.Length; 
     for (int x = 0; x < n; x++) 
     { 
      int min_index = x; 
      for (int y = x; y < n; y++) 
      { 
       if (ar[min_index] > ar[y]) 
       { 
        min_index = y; 
       } 
       ar.Swap(y, ar[x], ar[min_index]); 
      } 
     } 
    } 

感謝您的任何想法和幫助。

我交換代碼看起來像這樣

public override void Swap(int j, int a, int b) 
    { 
     data[j - 1] = a; 
     data[j] = b; 
    } 
+1

我們可以看到你的交換方法嗎?也考慮讓你的問題更明確。 –

+1

[堆棧溢出文檔的選擇排序](http://stackoverflow.com/documentation/algorithm/7473/selection-sort#t=201703072303190753508) –

回答

-2

使用LINQ:

var SortedArray = ar.OrderBy(o => o.Index).ToArray(); 
+1

這不會回答他的問題。 downvote那 –

+0

@Os。它沒有回答這個問題,因爲沒有提出問題,但是,是的,它沒有回答這個問題。 – Servy

+0

@Servy是真的,問題的作者並沒有明確地提出他的問題。 –

0

你有正確的想法,除非出現一些小問題。我沒有編譯,但這應該工作。

public static void SelectionSort(DataArray ar) 
{ 
    int n = ar.Length; 
    for (int x = 0; x < n-1; x++) 
    { 
     int min_index = x; 
     for (int y = x+1; y < n; y++) 
     { 
      if (ar[min_index] > ar[y]) 
      { 
       min_index = y; 
      } 
      ar.Swap(y, ar[x], ar[min_index]); 
     } 
    } 
}