选择排序
原理:
遍历元素找到最小的值放到第一个位置,第一轮从第一个元素开始,假定第一个元素arr[0]的当前数组最小值且最小值下标是0,然后将它和后续的arr[1],arr[2],…arr[length-1],比较,如果有找到比arr[0]小的值就重新确定最小值和最小值下标,这样第一轮下来,就能找到整个数组排序后的一个有序元素。第二轮排序从数组的第二个元素开始,即arr[1],依次和后续arr[2],arr[3],…arr[length-1]做比较,有比arr[1]小的就重新确定最小值和最小值下标,第三轮从arr[2]开始,依次类推,就能将整个数组排好序。.
示意图:
程序演示:
public class SelectSort {
public static void main(String[] args) {
int[] arr = {23, 4, 12, 45,3, 67};
// 当前最小值下标
int minIndex;
//当前最小值
int j=0;
for (int i = 0; i < arr.length; i++) {
minIndex=i;
j=i;
for (; j < arr.length - 1; j++) {
if (arr[minIndex] > arr[j]) {
// 重新选取最小值的下标
minIndex = j;
}
}
// 交换
int temp;// 中间量
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
System.out.println("选择排序后的数组:" + Arrays.toString(arr));
}
}
排序结果: