选择排序
选择排序和冒泡排序差不多,只不过它是每一次是固定位与其他位置进行比较交换,本文采用的是升序排列。
下面来看一下选择排序的代码:
int[] arr1 = {5, 3, 2, 6, 1};
for (int i = 0; i < arr1.length - 1; i++) {
for (int j = i + 1; j < arr1.length; j++) {
if (arr1[i] > arr1[j]) {
int temp = arr1[i];
arr1[i] = arr1[j];
arr1[j] = temp;
}
}
}
由if里的循环条件可以看出:外循环执行一次的时候,arr1[0]依次与后面的元素相比较,将小的数放在arr1[0]的位置,所以外循环执行了第一次的时候,找到了这组数的最小值,然后是arr1[1]与后面的元素进行比较,最后执行的是arr[3]与arr[4]的比较,比较出最后两个数字的大小,不用再执行第五次,所以外循环的判定条件为arr1.length - 1,而内循环每次都要比较到最后一位,所以判定条件为arr1.length,因为第一次是进行arr1[0]与arr[1]的比较,且,每次找到的最小数不再参与比较,所以j 的初始值为i + 1 。