我在這種情況下做錯了什么?我只得到了這個輸入的錯誤輸出。
public class SelectionSort {
public void sort (int nums[]){
for(int i = 0; i < nums.length - 1; i ){
int min_index = i;
for(int j = i 1; j < nums.length; j ){
if(nums[j] < nums[min_index]){
min_index = j;
int temp = nums[min_index];
nums[min_index] = nums[i];
nums[i] = temp;
}
}
}
}
public void printArr(int nums[]){
for(int i = 0; i < nums.length; i){
System.out.println(nums[i]);
}
}
public static void main(String args[]){
int nums[] = {10,22,34, 45, 50, 60, 8, 12};
SelectionSort obj = new SelectionSort();
obj.sort(nums);
obj.printArr(nums);
}
}
錯誤輸出 8 12 10 22 34 45 50 60
正確的輸出應該是 8 10 12 22 34 45 50 60
uj5u.com熱心網友回復:
每次找到新的最小值時,您都會進行交換:
if(nums[j] < nums[min_index]){
min_index = j;
int temp = nums[min_index];
nums[min_index] = nums[i];
nums[i] = temp;
}
相反,僅在找到最低最小值時才進行交換:將交換移到回圈之后。j
學習如何除錯代碼是一項基本技能。Java 旨在支持除錯。使用 IDE(我推薦 IntelliJ)并學習如何使用它的除錯器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487385.html
上一篇:如何查找單詞串列中的所有字符
