我正在尝试根据example 104.5对数组进行排序。它要求您对从最小到最大的数组进行排序。我已经多次彻底浏览了我的程序,但我无法发现我的错误。这是我的排序类的代码:
import java.util.Arrays;
public class Sorting {
public static int smallest(int[] array) {
int min = array[0];
for(int i = 0; i < array.length; i++){
if(array[i] < array[0]) {
min = array[i];
}
}
return min;
}
public static int indexOfTheSmallest(int[] array) {
int ind = array[0];
for(int i = 0; i < array.length; i++){
if(array[i] < array[0]) {
ind = i;
}
}
return ind;
}
public static int indexOfTheSmallestStartingFrom(int[] array, int index) {
int ind = index;
for(int i = index; i < array.length; i++){
if(array[i] < array[index]) {
ind = i;
}
}
return ind;
}
public static void swap(int[] array, int index1, int index2) {
int stor = array[index1];
array[index1] = array[index2];
array[index2] = stor;
}
public static void sort(int[] array) {
int indSmall;
System.out.println(Arrays.toString(array));
for(int i = 0; i < array.length; i++) {
indSmall = indexOfTheSmallestStartingFrom(array, i);
swap(array, indSmall, i);
System.out.println(Arrays.toString(array));
}
}
}
这是我正在运行的代码:
int[] values = {8, 3, 7, 9, 1, 2, 4};
Sorting.sort(values);
应输出:
[8, 3, 7, 9, 1, 2, 4]
[1, 3, 7, 9, 8, 2, 4]
[1, 2, 7, 9, 8, 3, 4]
[1, 2, 3, 9, 8, 7, 4]
[1, 2, 3, 4, 8, 7, 9]
[1, 2, 3, 4, 7, 8, 9]
[1, 2, 3, 4, 7, 8, 9]
但它正在输出:
[8, 3, 7, 9, 1, 2, 4]
[4, 3, 7, 9, 1, 2, 8]
[4, 2, 7, 9, 1, 3, 8]
[4, 2, 3, 9, 1, 7, 8]
[4, 2, 3, 8, 1, 7, 9]
[4, 2, 3, 8, 1, 7, 9]
[4, 2, 3, 8, 1, 7, 9]
[4, 2, 3, 8, 1, 7, 9]
另外,这是我的第一篇文章,对不起,如果我做错了。
答案 0 :(得分:1)
此
if(array[i] < array[0]) {
应该是
if(array[i] < min) {
或您可以使用Math.min(int, int)
之类的
min = Math.min(array[i], min);
根本没有if
。
,在indexOfTheSmallestStartingFrom
if(array[i] < array[index]) {
应该是
if(array[i] < array[ind]) {