【发布时间】:2015-12-14 14:57:38
【问题描述】:
所以我做了这个选择排序代码,但我希望它在每次调用函数时增加一个排序循环。
所以我觉得还可以。为什么不直接删除外部 for 循环并将 index 替换为顶部的静态变量,并在每次函数完成其操作时递增它。但这只是把排序搞砸了。有人可以帮忙吗?
问题:如何在每次调用函数时一次完成排序?
我不希望它一次性对整个事物进行排序
private static void selectionSort(int[] array) {
for (int index = 0; index < array.length; index++) {
int currentMin = array[index];
int indexOfMin = index;
for(int j = index+1; j < array.length; j++) {
if(array[j] < currentMin) {
currentMin = array[j];
indexOfMin = j;
}
}
swap(array, index, indexOfMin);
}
}
private static void swap(int[] a, int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
【问题讨论】:
-
你有什么问题?这个函数有什么问题?
-
看到您的编辑。你的意思是你想打印出程序的每一步,比如
312->132->123? -
基本上我用条形图直观地显示这种排序,每次单击按钮时,它都会逐步完成排序并调整条形