共總結了冒泡,選擇,插入,歸併,快速,希爾,堆七種排序方式,而v8引擎sort的排序:陣列長度小於等於 10的用插入排序,其它的用快速排序。
不穩定演算法:快 希 選 堆
以下是演算法可能涉及到的公共函式:
//排除非陣列
function checkarray(array)
//交換兩個元素
function swap(array, left, right)
function bubble(array)
}return array;
}function checkarray(array)
function swap(array, left, right)
變種:求陣列中最小 的k個數字
function getleastnumbers_solution(input, k)
swap(arr,min,i);
}}
//預設前面是已經排好序的,遍歷陣列,取出當前值與前面排好的序列進行比較。
//如果當前值比前乙個數小,就與其交換位置。
//重複以上步驟
function insert(arr)
/* mergesort(array, left, right)
mergesort(data, 0, 6) // mid = 3
mergesort(data, 0, 3) // mid = 1
mergesort(data, 0, 1) // mid = 0
mergesort(data, 0, 0) // 遇到終止,回退到上一步
mergesort(data, 1, 1) // 遇到終止,回退到上一步
// 排序 p1 = 0, p2 = mid + 1 = 1, mergearray(left0,mid0,right1,array) [8,3]變成[3,8]
// 回退到 `mergesort(data, 0, 3)` 執行下乙個遞迴
mergesort(2, 3) // mid = 2
mergesort(3, 3) // 遇到終止,回退到上一步
// 排序 p1 = 2, p2 = mid + 1 = 3, [2,1]變[1,2]
// 回退到 `mergesort(data, 0, 3)` 執行合併邏輯//mid=1
// 排序 p1 = 0, p2 = mid + 1 = 2
// 執行完畢回退
// 左邊陣列排序完畢,右邊也是如上軌跡
*/
function quicksort(array, left, right) arr 陣列
* @return: 新陣列
*/
console.log(shellsort([2,5,66,1,3,4]))
function shellsort(arr) arr 陣列
* @return: 新陣列
*/heapsort([4,6,8,5,9]);
function heapsort(arr)
//2.將堆頂元素與末尾元素進行交換,再進行調整
for(let j=arr.length-1;j>0;j--)
console.log(arr);
}/**
* @msg: 調整大頂堆(僅是調整過程,建立在大頂堆已構建的基礎上)
* @param arr
* @param i
* @param length *
* @return: 新陣列
*/function adjustheap(arr,i,length)else
} arr[i]=temp;//temp會根據情況賦值給對應的節點,i可能變化
}
JS 常見排序演算法
氣泡排序 function bubblesort myarray return myarray function swap myarray,p1,p2 var myarray 3 44,38 5,47 15,36 26,27 2,46 4,19 50,48 var result bubblesort...
js常見排序演算法
排序演算法是js最基礎的演算法 1.氣泡排序 2.快速排序 3.選擇排序 4.插入排序 氣泡排序 氣泡排序的思想就是從左到右依次比較陣列a相鄰的兩個數,將較大的數放到後面,一輪比較之後,最大的數會排到最後面 第二輪比較後次大的數會在倒數第二的位置,直到進行a.length次比較後,陣列就會公升序排列...
js常見排序演算法
找出最大的排在後面 var bubblesort function originalarray return arr 找出最小的排在前面 var selectionsort function originalarray if minindex i return arr var insertionso...