各种排序算法总结
public class BaseSort {
public static void swap (int[] nums, int i, int j) {
nums[i] = nums[i] ^ nums[j];
nums[j] = nums[i] ^ nums[j];
nums[i] = nums[i] ^ nums[j];
}
}
冒泡排序(从最简单的开始)
public void bubbleSort(int[] nums) {
int size = nums.length;
for (int i = size - 1; i >= 0; i --) {
for (int j = i - 1; j >= 0; j --) {
if (nums[i] < nums[j]) {
swap(nums, i, j);
}
}
}
}
选择排序
public void selectSort(int[] nums) {
int size = nums.length;
for (int i = 0; i < size; i ++) {
int min = i;
for (int j = i + 1; j < size; j ++) {
if (nums[min] > nums[j]) {
min = j;
}
}
if (i != min) {
swap(nums, i, min);
}
}
}
插入排序
public void insertSort(int[] nums) {
int size = nums.length;
for (int i = 1; i < size; i ++ ) {
int preIndex = i - 1;
int current = i;
while (preIndex >= 0 && nums[preIndex] > nums[current]) {
current = preIndex;
swap(nums, current, preIndex);
preIndex = preIndex - 1;
}
}
}