排序算法-交換排序(javascript)
阿新 • • 發佈:2017-12-04
快速排序 ava 排序 -i 最壞情況 span 逆序 記錄 進行
思想:兩兩比較,一旦發現不滿足次序要求時進行交換,知道整個序列滿足排序要求。
典型:冒泡排序與快速排序。
冒泡排序
思想:比較相鄰兩個,逆序就交換,每次排序將最大的‘下沈’或最小的‘上浮’。
function bubbleSort(arr){ const len = arr.length; let temp = 0; for(let i=0;i<len-1;i++){ for(let j=0;j<len-i-1;j++){ if(arr[j]>arr[j+1]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } return arr; }
時間復雜度:
最好情況:正序。只需要一趟排序,進行n-1次比較,不移動記錄。
最壞情況:逆序。只要n-1趟排序,比較次數為n^2/2,移動次數3n^2/2。
所以時間復雜度為O(n^2)。
空間復雜度:
只在兩個記錄交換位置時需要一個輔助空間做暫存記錄,所以空間復雜度為O(1)。
特點:
1、是穩定排序。
2、可用於鏈式存儲結構。
3、移動記錄次數較多,算法平均時間性能比直接插入排序差。當初始記錄無序,n較大時,此算法不適合。
快速排序
戳:Here
排序算法-交換排序(javascript)