简单选择排序
public void sort(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
int min = i;
for (int j = i; j < a.length; j++) {
if (a[j] < a[min]) {
min = j;
}
}
if (min != i) {
int temp = a[min];
a[min] = a[i];
a[i] = temp;
}
}
}
一次选出最大和最小两个数的选择排序
类似于快速排序的思路,区别是选择排序要找到这个待交换的元素。
public void sort(int[] a) {
int left = 0;
int right = a.length - 1;
while (left < right) {
int min = left;
int max = right;
for (int i = left; i <= right; i++) {
if (a[i] < a[min]) {
min = i;
}
if (a[i] > a[max]) {
max = i;
}
}
if (min != left) {
int temp = a[min];
a[min] = a[left];
a[left] = temp;
}
if (max == left){
max = min;
}
if (max != right) {
int temp = a[max];
a[max] = a[right];
a[right] = temp;
}
left++;
right--;
}
}