首先要明白什么是復雜程度?
時間復雜度指的是一個算法執行所耗費的時間
空間復雜度指運行完一個程序所需內存的大小
穩定指,如果a=b,a在b的前面,排序后a仍然在b的前面
不穩定指,如果a=b,a在b的前面,排序后可能會交換位置
1.快速排序(不穩定)
原理:首先從原始數組中找到最小的元素,並把該元素放在數組的最前面,然后再從剩下的元素中尋找最小的元素,放在之前最小元素的后面,知道排序完畢。
時間復雜度:
最好情況是(n)
最差情況是(n*n)
function quickSort(arr){
if (arr.length <= 1) return arr;
var pivotIndex = Math.floor(arr.length/2);
var pivot = arr.splice(pivotIndex,1)[0];
var left = [];
var right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i])
} else {
right.push(arr[i])
}
}
return quickSort(left).concat([pivot],quickSort(right))
}
}
quickSort(arr)
2.冒泡排序 (穩定)
原理:依次比較相鄰的兩個值,如果后面的比前面的小,則將小的元素排到前面。依照這個規則進行多次並且遞減的迭代,直到順序正確。(從大到小/從小到大是根據自己判斷的)
時間復雜度:
最好情況是(n*n)
最差情況是(n*n)
function sort(arr){
var temp = null;
for (var i = 0;i < arr.length-1; i++){
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
return arr
}
sort(arr)