我有一些关于选择排序的问题。我有点困惑。
int [] arr = {5,4,3,2,1}; // This is my array
int min = 0;
for(int i = 0;i<arr.length;i++)
{
//Assume first element is min
min = i;//Selection sort algorithm says that find the minimum in the
// array, but first element is not minimum.What's point here?
for(int j = i + 1;j<arr.length;j++)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
System.out.println(arr[i]);//I print the in ascending order
}
}
输出是:
4
3
2
1
4
3
2
4
3
4
怎么了?
最佳答案
选择排序就是在循环的每一步中寻找最小值。你没有找到最小值(可能是通过 if 语句),只是简单地在你的内部循环中交换值。所以你实际上没有做任何排序。
根据您的实现进行更正:
final int[] arr = { 5, 4, 3, 2, 1 }; // This is my array
int min;
for (int i = 0; i < arr.length; i++) {
// Assume first element is min
min = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
if (min != i) {
final int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
System.out.println(arr[i]);// I print the in ascending order
}
这应该给你输出:
1
2
3
4
5
关于Java - 选择排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362640/