一 思路
假设给定数组arr如下,以从小到大排序为例
第一轮排序
1.寻找数组中最小的最小值,记录最小值得下标为index,最小值为min
2.将arr[ 0 ]与最小值进行交换
结果:index为8,min为1
int minIndex = 0;
int min = array[0];
//寻找数组中的最小值,并且将最小值赋值给min,最小值下标记录为index
for (int i = 0; i <= array.length - 1; i++) {
if (min > array[i]) {
minIndex = i;
min = array[i];
}
//交换,将arr[0]放到第最小的值的地方,将最小值放到arr[0]
array[minIndex] = array[0];
array[0] = min;
}
第二轮排序
因为arr[ 0 ]已经是最小值,所以从arr[ 1 ]开始
1.寻找arr[ 1 ] 到 arr[ 8 ]中最小的最小值,记录最小值得下标为index,最小值为min
2.将arr[ 1 ]与最小值进行交换
结果:index为7,min为2
int minIndex = 1;
int min = array[1];
//寻找数组中的最小值,并且将最小值赋值给min,最小值下标记录为index
for (int i = 1; i <= array.length - 1; i++) {
if (min > array[i]) {
minIndex = i;
min = array[i];
}
//交换,将arr[0]放到第最小的值的地方,将最小值放到arr[0]
array[minIndex] = array[1];
array[1] = min;
}
}
然后发现规律,每一轮只是改变了一个数字,所以可以用for循环嵌套
完整代码:
for (int j = 0; j < array.length; j++) {
int minIndex = j;
int min = array[j];
for (int i = j; i <= array.length - 1; i++) {
if (min > array[i]) {
minIndex = i;
min = array[i];
}
array[minIndex] = array[j];
array[j] = min;
}
}