1. 程式人生 > >JS排序算法總結:八種算法對比

JS排序算法總結:八種算法對比

線性 nlog 對比 http xxx 運行 bsp 排序 image

目的:掌握 排序算法的分類及不同算法復雜度的對比、搞清楚 XXX與數組初始狀態無關分為幾種情況:

  a、算法復雜度與初始狀態無關;

  b、元素總比較次數與初始狀態無關;

  c、元素總移動次數與初始狀態無關。

1、算法分類

十種常見排序算法可以分為兩大類:

  非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間復雜度不能突破O(nlogn),因此稱為非線性時間比較類排序。

  線性時間非比較類排序:不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間運行,因此稱為線性時間非比較類排序。

技術分享圖片

內部排序與外部排序:

另外,所有的排序都是在內存中做的

,這裏說的內部排序是指待排序的內容在內存中就可以完成,當待排序的文件很大,計算機內存不能容納整個文件,這時候對文件就不能使用內部排序了,而外部排序是指待排序的內容不能在內存中一下子完成,它需要做內外存的內容交換,外部排序常采用的排序方法是歸並排序。

2、算法復雜度

技術分享圖片

基本概念:

  穩定:如果a原本在b前面,而a=b,排序之後a仍然在b的前面。

  不穩定:如果a原本在b的前面,而a=b,排序之後 a 可能會出現在 b 的後面。

  時間復雜度:對排序數據的總的操作次數。反映當n變化時,操作次數呈現什麽規律。

  空間復雜度:是指算法在計算機內執行時所需存儲空間的度量,它也是數據規模n的函數。

3、排序方法的算法復雜度與數組初始狀態無關

由表中紅線標出的地方可以輕易得出以下四種排序方法的算法復雜度與數組的初試狀態無關:

一堆(堆排序)烏龜(歸並排序)選(選擇排序)基(基數排序)友

其中,元素總比較次數與初始狀態無關的有:選擇排序基數排序

   元素總移動次數與初始狀態無關的有:歸並排序基數排序

JS排序算法總結:八種算法對比