一,常见排序算法
排序算法 | 是否稳定 | 时间复杂度 | 空间复杂度 | |
---|---|---|---|---|
冒泡排序 | ||||
插入排序 | ||||
选择排序 | ||||
快速排序 | ||||
基数排序 | ||||
希尔排序 | ||||
计数排序 | ||||
归并排序 | ||||
堆排序 | ||||
桶排序 | ||||
二叉树排序 |
二,算法实现
2.1 冒泡排序(bubble sort)
private static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length; i++)
for (int j = i; j < arr.length - 1; j++)
if (arr[j] > arr[j+1]) {
// swap, not stable
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
2.2 插入排序(insertion sort)
private static void insertionSort(int[] arr) {
int j;
for (int i = 1; i < arr.length; i++) {
int temp = arr[i];
for (j = i-1; j >= 0 && temp<arr[j]; j--) {
arr[j+1] = arr[j];
}
arr[j+1] = temp;
}
}
2.3 快速排序(quick sort)