选择排序–规则
我们将数组分割成两部分(和插入排序类似),前面一部分是有序的,后面一部份是待排序的。每次从后面无序的部分找出最小值,再放入前面有序部分。
选择排序–代码
int min_index;
int now_index;
for (int i = 0; i < arr.length - 1; i++) {
now_index = -1;
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
now_index = j;
}
}
if (now_index != -1 {
arr[min_index] = arr[min_index] ^ arr[now_index];
arr[now_index] = arr[min_index] ^ arr[now_index];
arr[min_index] = arr[min_index] ^ arr[now_index];
}
}
System.out.println(Arrays.toString(arr));
选择排序–逻辑思维
我们引入一个索引用来指向最小值的下标。如果下标不变还是 -1 则说明没有数值移动 第一个for循环是用来控制已经排好序的所在位置。我们只需要排length -1 个值,最后一个也就是最大值自然会被排好序。 第二个for循环是确认待排序的部分的值,if是用来找出最小值的,如果找到则记录下它的下标,再互换位置即可。
|