常見排序演算法 js

2022-03-17 13:02:28 字數 1935 閱讀 6795

共總結了冒泡,選擇,插入,歸併,快速,希爾,堆七種排序方式,而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...