我已閱讀所有試圖找到答案的討論,但沒有任何答案對我有效,因此我正在以此方式嘗試。計算選擇排序中的交換次數
public static int SelectionSort(long[] num)
{
int i, j, first;
long temp;
int swap = 0;
int pass = 0;
int count = 0;
boolean Mini = false;
for (i = num.length - 1; i > 0; i--)
{
for(int k = 0; k < num.length; k++)
{
System.out.println(" k = " + k
+ " \t X[i] = " + num[k] + " swap count: " + swap);
}
System.out.println("");
first = 0; //initialize to subscript of first element
for(j = 1; j <= i; j ++) //locate smallest element between positions 1 and i.
{
if(num[j] < num[first])
{
first = j;
//Mini = true;
}
}
//if(Mini){
// swap++;
//}
temp = num[first]; //swap smallest found with element in position i.
num[first] = num[i];
num[i] = temp;
}
return swap;
}
使用一個簡單的數組作爲我的測試案例:
long[] X = {1, 4, 3, 2, 5};
互換的數量應該只等同於1,因爲它只是交換的第一和最後一個元素。但是,它不起作用。雖然我知道如果條件不起作用,我想不出會發生什麼。我似乎無法使用它實際交換項目時增加交換的邏輯。
唯一的問題是程序每次都會增加交換。我只希望它在交換時增加。現在如果我增加交換,它會給我一個4的交換。它應該只給我一個交換1. – tjg92
是的!工作!非常感謝! – tjg92