前言:
這裡是修真院前端小課堂,每篇分享文從
八個方面深度解析前端知識/技能,本篇分享的是:
【js常見的排序演算法 】
今天給大家分享一下,修真院官網js任務4,深度思考中的知識點——js常見的排序演算法
一、背景介紹
演算法(algorithm)是指解題方****而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果乙個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。乙個演算法的優劣可以用空間複雜度與時間複雜度來衡量。
二、知識剖析
演算法的特點
1.有限性(finiteness):乙個演算法必須保證執行有限步之後結束。
2.確切性(definiteness): 乙個演算法的每一步驟必須有確切的定義。
3.輸入(input):乙個演算法有零個或多個輸入,以刻畫運算物件的初始情況,所謂零個輸入是指演算法本身給定了初始條件。
4.輸出(output):乙個演算法有乙個或多個輸出。沒有輸出的演算法毫無意義。
5.可行性(effectiveness):演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性)。
三、常見問題
幾種常見演算法的寫法及實現
四、解決方案 編碼實戰
氣泡排序(bubble sort)
思想:每一次對比相鄰兩個資料的大小,小的排在前面,如果前面的資料比後面的大就交換這兩個數的位置
實現:需要用到兩層for迴圈,外層從第乙個數到倒數第二個數,內層從外層的後面乙個數到最後乙個數
特點:排序演算法的基礎。簡單實用易於理解,缺點是比較次數多,效率較低。
氣泡排序
快速排序(quick sort)
思想:先找到乙個基準點(一般指數組的中部),然後陣列被該基準點分為兩部分,依次與該基準點資料比較,如果比它小,放左邊;反之,放右邊。
左右分別用乙個空陣列去儲存比較後的資料。最後遞迴執行上述操作,直到陣列長度<=1;
特點:快速,常用。缺點是需要另外宣告兩個陣列,浪費了記憶體空間資源。
快速排序
插入排序(insertion sort)
(1) 從第乙個元素開始,該元素可以認為已經被排序
(2) 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄
(3) 如果該元素(已排序)大於新元素,將該元素移到下一位置
(4) 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置
(5)將新元素插入到下一位置中
(6) 重複步驟2
插入排序
五、擴充套件思考
這幾種排序演算法的優缺點
n: 資料規模
k:「桶」的個數
in-place: 占用常數記憶體,不占用額外記憶體
out-place: 占用額外記憶體
穩定性:排序後2個相等鍵值的順序和排序之前它們的順序相同
js常見的排序演算法及實現
六、參考文獻
ppt
js的十大經典演算法排序
js實現兩種實用的排序演算法——冒泡、快速排序
七、更多討論
JS常見的排序演算法
先簡單的來了解一下何謂演算法。在電腦科學與數學中,乙個排序演算法 英語 sorting algorithm 是一種能將一串資料依照特定排序方式進行排列的一種演算法 最常用到的排序方式是數值順序以及字典順序。有效的排序演算法在一些演算法 例如搜尋演算法與合併演算法 中是重要的,如此這些演算法才能得到正...
js常見的排序演算法
冒泡演算法算是排序裡面比較基礎的一種演算法。它的實現原理為 從第乙個元素開始,將它與下乙個索引元素比較。如果當前元素的值比下乙個元素的值要大,則兩者交換位置,否則位置不變。接下來,索引往後移一位,繼續比較接下來兩個數的值。一直重複上面的操作,直到比較到最後乙個元素,因為大的元素位置會交換位置向後移,...
js常見的排序演算法
最近面試可能會問這些 1,插入排序 function sort elements return res function one arr,x arr i x temp true break temp arr.push x return arr 簡單來說就是插入乙個數,在結果裡找他插入的位置。位置怎麼...