2016-02-12 86 views
0

好吧,所以我想要得到選擇排序的算法,但修改它是從右到左讀取並將最大數字放在數組的末尾。例如,數組{3,5,2,1,4}將是{5,4,3,2,1}。你可能會說只是使用常規的排序,然後扭轉結果,但那不是我要找的方式。所以我試圖想出這個結果。從右到左讀取一個數組

reverseSelectionSort(A[0...n-1]) 
{ 
    for(int i=n-1; i=>1; i--) 
    { 
     int min = i; 
     for(int j=i-1; j=>0; j--) 
     { 
      if(A[j] < A[min]) 
      { 
       min = j; 
      } 
     } 
     swap(A[i], A[min]) 
    } 
} 

好的,這就是我想出的。我做了正確的算法嗎?

+0

您是否有理由懷疑您沒有正確實施它?如果是這樣,爲什麼? – templatetypedef

+0

您應該添加一個標籤,指出您正在使用的編程語言。 –

+0

我使用java,但是這更像是僞代碼,我只是想確定我做對了 – Forcatos

回答

0

以下是Java中的選擇排序(遞減最終順序)的實現。

static void selectionSort(int[] a) { 
    for (int i=0; i<a.length-1; i++) { 
     int max=i; 
     for (int j=i+1; j<a.length; j++) { 
      if (a[j]>a[max]) { 
      max=j; 
      } 
     } 
     swap(a[i], a[max]); 
    } 
}