js實現各種排序總結

2021-07-22 10:35:51 字數 2191 閱讀 7324

1.氣泡排序

氣泡排序是最普通的一種排序了,也是時間複雜度最高的,排序過程如下圖:

**如下:

var sortdata = function

(data)

}} return data;

}

2.選擇排序

選擇排序的本質就是每次迴圈中找到本次迴圈的最小值的位置minindex,然後判斷minindex是否為本次迴圈的開頭第乙個位置,如果不是,交換兩個值。如圖:

**如下:

var selectionsort = function

(data)

}if(i !== indexmin)

}

return data;

}

3.插入排序

插入排序思想是,規定第乙個值已經排序,然後判斷第二項的值是否大於第一項的值,然後換位,接下來判斷第三項的值與前兩項值得比較,依此類推,如圖:

**如下:

var insertsort = function

(data)

data[j] = temp;

} return data;

}

4.歸併排序

其思想是將原始陣列切分成較小的陣列,直到每個小陣列只有一

個位置,接著將小陣列歸併成較大的陣列,直到最後只有乙個排序完畢的大陣列,如圖:

**如下:

var mergesort = function

(data)

var mid = math.

floor(length / 2),

left = data.slice(0, mid),

right = data.slice(mid, length);

return merge(mergesort(left), mergesort(right));

}var merge = function

(left, right)

} while(il

length)

while(ir

length)

return result;

}

5.快速排序

(1) 首先,從陣列中選擇中間一項作為主元。

(2) 建立兩個指標,左邊乙個指向陣列第乙個項,右邊乙個指向陣列最後乙個項。移動左指

針直到我們找到乙個比主元大的元素,接著,移動右指標直到找到乙個比主元小的元素,然後交

換它們,重複這個過程,直到左指標超過了右指標。這個過程將使得比主元小的值都排在主元之

前,而比主元大的值都排在主元之後。這一步叫作劃分操作。

(3) 接著,演算法對劃分後的小陣列(較主元小的值組成的子陣列,以及較主元大的值組成的

子陣列)重複之前的兩個步驟,直至陣列已完全排序。

**如下:

var quicksort = function

(data)

} return quicksort(left).concat([pivot],quicksort(right));

}

js 實現各種排序

插入排序 function insert1 arr console.log array 選擇排序 function selectsort array if min i 希爾排序 function shellsort arr console.log arr 歸併排序 function msort so...

js 實現各種排序

一萬個隨機數排序五次執行時間分別為 362 389 361 372 408 毫秒 var arr for var j 0 j 10000 j var curr new date function bubble sort arr bubble sort arr console.log new date...

js實現各種排序演算法

氣泡排序 時間複雜度為o n 2 有兩個優點 1.程式設計複雜度 很低,很容易寫出 2.具有穩定性,這裡的穩定性是指原序列中相同元素的相對順序仍然保持到排序後的序列,而堆排序 快速排序均不具有穩定性。實現基本思路 氣泡排序是經過n 1趟子排序完成的,第i趟子排序從第1個數至第n i個數,若第i個數比...