所以我要做的是通过遍历整个数组对数组进行排序,并且每次都使用数组中的最小值交换值。我已经创建了一个查找minValue的方法,但我不确定如何将该值与当前值交换。这可能是一个可怕的解释,但这是代码:
public static int findMin(int[] numList, int start, int end){
int minIndex = numList[0];
for (int i = start; i < end; i++) {
if(numList[i] < minIndex){
minIndex = numList[i];
}
}
return minIndex;
}
我的循环应该对数组进行排序:
for (int i = 0; i < numList.length; i++) {
int minIndex = findMin(numList,i,10);
numList[i] = minIndex;
}
正如您所看到的,这只会将numList[i]
替换为minValue。那么如何将numList [i]中已有的值与数组minValue中的任何位置交换?
谢谢!
答案 0 :(得分:2)
您需要将值复制到临时整数以进行交换:
int temp = numList[i];
numList[i] = numList[minIndex];
numList[minIndex] = temp;
答案 1 :(得分:1)
你必须使用临时整数
int temp = numList[i];
numList[i] = numList[minIndex];
numList[minIndex] = temp;
在你的findMin()我认为
int minIndex = numList[0];
应该是
int minIndex = numList[start];
因为在第一次交换后,numlist [0]将是最小的值。应该在数组的其余部分中搜索最小值,以便我们在每次迭代中连续获得更大的值。
答案 2 :(得分:1)
Corrected方法是
public static int findMin(int[] numList, int start, int end){
int minVal= numList[start];
int minIndex = start;
for (int i=start; i <end; i++) {
if(numList[i] <minVal){
minIndex=i;
minVal=numList[i];
}
}
return minIndex;
}
修正后的循环是
for (int i = 0; i < numList.length; i++) {
minIndex = findMin(numList,i,numList.length);
temp=numList[i];
numList[i]=numList[minIndex];
numList[minIndex]=temp;
}