如何理解JavaScript中經常使用的4種排序算法?

冒泡排序

冒泡排序是咱們在編程算法中,算是比較經常使用的排序算法之一,在學習階段,也是最須要接觸理解的算法,因此咱們放在第一個來學習。
算法介紹:
  • 比較相鄰的兩個元素,若是前一個比後一個大,則交換位置。
  • 第一輪把最大的元素放到了最後面。
  • 因爲每次排序最後一個都是最大的,因此以後按照步驟1排序最後一個元素不用比較。
冒泡算法改進:
設置一個標誌,若是這一趟發生了交換,則爲true。不然爲false。若是這一趟沒有發生交換,則說明排序已經完成。代碼以下:
假如數組長度是20,若是隻有前十位是無序排列的,後十位是有序且都大於前十位,因此第一趟遍歷排序的時候發生交換的位置一定小於10,且該位置以後的一定有序,咱們只須要排序好該位置以前的就能夠,所以咱們要來標記這個位置就能夠了,便可以記錄每次掃描中最後一次交換的位置,下次掃描的時候只要掃描到上次的最後交換位置就好了,由於後面的都是已經排好序的,無需再比較,代碼以下:
每一次循環從兩頭出發算出最大和最小值,代碼以下:
在代碼3的基礎上記錄每次掃描最後一次交換的位置,下次掃描的時候只要掃描到上次的最後交換位置就行,同代碼2,代碼以下:
冒泡排序動圖演示:

快速排序

算法介紹:
快速排序是對冒泡排序的一種改進,第一趟排序時將數據分紅兩部分,一部分比另外一部分的全部數據都要小。而後遞歸調用,在兩邊都實行快速排序。
快速排序動圖演示:

選擇排序

算法介紹:
選擇排序就是從一個未知數據空間裏,選取之最放到一個新的空間
選擇排序動圖演示:

插入排序

算法介紹:
  • 從第一個默認被排好序的元素開始
  • 取出下一個元素,在已經排序的元素序列中從後向前掃描
  • 若是已排序的元素大於取出的元素,則將其分別向後移動一位
  • 直到找到已排序的元素中小於或等於取出的元素,將取出的元素放到它的後一位
  • 重複步驟2
插入排序算法改進-二分法插入排序:
插入排序法動圖演示:

以上就是4中比較基礎的排序方法了,JavaScript的排序算法還有不少,這是咱們4種最多見也是最基本的算法,掌握理解好,在面試和開發中也能從容應對了。
若是你也喜歡學習JavaScript,喜歡學習前端開發,歡迎關注公衆號【前端研究所】,天天更新更多教程和學習方法哦!
相關文章
相關標籤/搜索