你好, 我刚刚开始接触JAVA, 问一个选择排序的问题。
private static void SelectionSort (int[] arr) {
for(int i=0; i
for(int j=i+1;j
if (arr[i] > arr[j]) {
int m;
m = arr[i];
arr[i] = arr[j];
arr[j] = m;
}
}
}
}
这个方法正确,但是交换次数多了,所以我想改进一下。
private static void SelectionSort (int[] arr) {
int min;
for(int i=0; i
min = arr[i];
for(int j=i+1;j
if (arr[i] > arr[j]) {
min = arr[j];
}
}
if (arr[i] > min) {
int t;
t = min;
min = arr[i];
arr[i] = t;
}
}
}
这是我改进后的方法,结果是不对的,我想知道我的思路哪里错了。 我想的是每次循环开始的时候设一个min, 将arr[i]赋给min,当有arr[i]比arr[j]大的时候就把arr[j]赋给min,内层循环结束了之后做一次交换。
请教一个选择排序的算法问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-