选择排序(Selection Sort)
题目描述
从一个无序的集合中,按某种比较方式依次按大到小,或者按下到大的顺序,将元素依次选择出来,重新组合来保证集合有序。
示例 1:
操场上有一支队伍高矮不一。现在体育委员让队伍中最矮的同学,站在第一个,之后按照身高顺序依次站在他后面。
代码
public void selectionSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] > arr[i]) { //将选最大的放在第一位
swap(arr, i, j);
}
}
}
}
private void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
总结
选择排序的思想是直接自然的。代码中复用入参给的数组,减少额外的内存开销