选择排序
先选定数组中第一个元素是最下的,下标赋值给minIndex,然后依次让数组中这个最小的与后面的比较,
如果发现后面的比这个小,将minIndex的是改为那个小的数的下标,最后让第一与下标是minIndex 的
元素交换,交换完之后,选地数组中第二元素是最小的,继续进行上面比较,交换
一直到最后一个元素
ublic class Demo4 {
public static void main(String[] args) {
int[] array = {5,1,6,4};
/*
关于选择排序
进入外层for循环
i = 0, 0 < 4, minIndex = 0,
进入内层for循环
j = 0,0<4, if array[0]<array[0] false j++
j = 1,1<4, if array[1]<array[0] true minIndex=1,j++
j = 2,2<4, if array[2]<array[1] false j++
j = 3,3<4, if array[3]<array[1] false j++
j = 4,4<4, false 内层循环结束
然后 for后面的if语句 0 != 1 ture array[0]与array[1]交换
{1,5,6,4} i++
i = 1,1 < 4, minIndex = 1;
进入内层for循环
j = 1,1<4, if array[1]<array[1] false j++
j = 2,2<4, if array[2]<array[1] false j++
j = 3,3<4, if array[3]<array[1] true minIndex=3 j++
j = 4,4<4, false 内层循环结束
然后 for后面的if语句 1 != 3 ture array[1]与array[3]交换
{1,4,6,5} i++
i = 2,2 < 4, minInde = 2;
进入内层for循环
j = 2,2<4, if array[2]<array[2] false j++
j = 3,3<4, if array[3]<array[2] true minIndex=3 j++
j = 4,4<4, false 内层循环结束
然后 for后面的if语句 2 != 3 ture array[2]与array[3]交换
{1,4,5,6} i++
i = 3 ,3 < 4 , minInde = 3;
进入内层for循环
j = 3,3<4, if array[3]<array[3] false j++
j = 4,4<4, false 内层循环结束
然后 for后面的if语句 3 != 3 false
{1,4,5,6} i++
i = 4 ,4 < 4 ,false 外层for循环结束
程序结束
*/
for (int i = 0; i < array.length; i++) {//每次假定数组开头元素最小
int minIndex = i;
for (int j = i; j < array.length; j++) {//依次让最头的那个与数组中其他 元素比较
if (array[j] < array[minIndex]){//如果找到更小的,下标赋值给minIndex
minIndex = j;
}
}
//每一次都比较一遍,然后开始用头元素与最小的元素交换
if (i != minIndex) {
int a = 0;
a = array[i];
array[i] = array[minIndex];
array[minIndex] = a;
}
}
}
}