冒泡排序
void bubbulingSort(int[] nums){
for(int i = 0; i < nums.length; i++){
for(int j = i + 1; j < nums.length; j++){
if(nums[i] > nums[j]){
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}
}
}
選擇排序
void selectedSort(int[] nums){
int min = 0;
for(int i = 0; i < nums.length; i++){
min = i;
for(int j = i + 1; j < nums.length; j ++){
if(nums[min] > nums[j]){
min = j;
}
}
int tmp = nums[i];
nums[i] = nums[min];
nums[min] = tmp;
}
}
複雜度
排序算法 |
平均時間複雜度 |
最壞時間複雜度 |
空間複雜度 |
是否穩定 |
冒泡排序 |
O(n2) |
O(n2) |
O(1) |
是 |
選擇排序 |
O(n2) |
O(n2) |
O(1) |
不是 |
直接插入排序 |
O(n2) |
O(n2) |
O(1) |
是 |
歸併排序 |
O(nlogn) |
O(nlogn) |
O(n) |
是 |
快速排序 |
O(nlogn) |
O(n2) |
O(logn) |
不是 |
堆排序 |
O(nlogn) |
O(nlogn) |
O(1) |
不是 |
希爾排序 |
O(nlogn) |
O(ns) |
O(1) |
不是 |
計數排序 |
O(n+k) |
O(n+k) |
O(n+k) |
是 |
基數排序 |
O(N∗M) |
O(N∗M) |
O(M) |
是 |