- 冒泡实现:
/**
* 冒泡排序
* @param arr 待排序数组
* @param isAsc true: 升序, false: 降序
*/
private static void bubbleSort(int[] arr, boolean isAsc) {
for (int i=1; i<arr.length; i++){
for (int j=0; j < arr.length-i; j++){
if ((arr[j] < arr[j+1]) ^ isAsc){
arr[j+1] = arr[j+1] ^ arr[j];
arr[j] = arr[j] ^ arr[j+1];
arr[j+1] = arr[j+1] ^ arr[j];
}
}
}
}
- 选择实现:
/**
* 选择排序
* @param arr 待排序数组
* @param isAsc true: 升序, false: 降序
*/
private static void selectSort(int[] arr, boolean isAsc) {
for (int i=0; i<arr.length; i++){
for (int j=i+1; j<arr.length; j++){
if ((arr[j] > arr[i]) ^ isAsc){
arr[j] = arr[j] ^ arr[i];
arr[i] = arr[i] ^ arr[j];
arr[j] = arr[j] ^ arr[i];
}
}
}
}
- 插入实现:
/**
* 插入排序
* @param arr 待排序数组
* @param isAsc true: 升序, false: 降序
*/
private static void insertSort(int[] arr, boolean isAsc) {
int key;
for (int i=1; i<arr.length; i++){
int j = i-1;
key = arr[i];
while (j >= 0 && ((arr[j] < key) ^ isAsc)){
arr[j+1] = arr[j];
j--;
}
arr[j+1] = key;
}
}
其们的时间复杂度都达到n2