选择排序
public class SelectionSort {
public static void main(String[] args) {
int[] arr = {55, 1, 77, 6, 322, 55, 64, 8};
sort2(arr);
System.out.println(Arrays.toString(arr));
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void swapByMove(int arr[], int i, int j) {
arr[i] = arr[i] ^ arr[j];
arr[j] = arr[i] ^ arr[j];
arr[i] = arr[i] ^ arr[j];
}
public static void sort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int minPosition = i;
for (int j = i + 1; j < arr.length; j++) {
minPosition = arr[minPosition] > arr[j] ? j : minPosition;
}
swap(arr, i, minPosition);
}
}
public static void sort2(int[] arr) {
for (int i = 0; i < arr.length / 2 + 1; i++) {
int minPosition = i;
int maxPosition = i;
for (int j = i + 1; j < arr.length - i; j++) {
minPosition = arr[minPosition] > arr[j] ? j : minPosition;
maxPosition = arr[maxPosition] < arr[j] ? j : maxPosition;
}
if (minPosition == maxPosition)
return;
swap(arr, i, minPosition);
if (i == maxPosition)
maxPosition = minPosition;
if (arr[arr.length - 1 - i] < arr[maxPosition])
swap(arr, arr.length - 1 - i, maxPosition);
}
}
}