js實現各種常用排序演算法

2021-07-14 15:39:51 字數 2060 閱讀 7950

氣泡排序

var

bubblesort = function

(arr)}if

(flag)

}};

2.選擇排序
var selectsort = function

(arr)}if

(i != min)

console.log(i+1

, ": "

+ arr);

}};function

swap

(arr, index1, index2)

;

3.插入排序
var

insertsort = function

(arr)

else

}arr[j + 1

] = key;

}};

4.希爾排序

var

shellsort = function

(arr)

arr[j] = temp;

}}};

5.歸併排序
function

mergesort

(arr)

varstep = 1

; var

left, right;

while

(step < arr.length)

if(right < arr.length)

step *= 2

; }

}function

mergearrays

(arr, startleft, stopleft, startright, stopright)

k = startleft;

for(var

i = 0

; i < (leftarr.length - 1

); ++i)

rightarr[rightarr.length - 1

] = infinity

; // 哨兵值

leftarr[leftarr.length - 1

] = infinity

; // 哨兵值

varm = 0

; var

n = 0

; for

(var

k = startleft; k < stopright; ++k)

else

}}

6.快速排序
var quicksort = function

(arr, left, right)

pivot = arr[left];

i = left;

j = right;

while

(i != j)

while

(arr[i]

<= pivot && i

< j)

if (i

< j)

} arr[left] = arr[j];

arr[j] = pivot;

quicksort(arr, left, i - 1

); quicksort(arr, i + 1

, right);

}

總結:演算法效率比較:

排序方法

平均情況

最好情況

最壞情況

氣泡排序

o(n²)

o(n)

o(n²)

選擇排序

o(n²)

o(n²)

o(n²)

插入排序

o(n²)

o(n)

o(n²)

希爾排序

o(nlogn)~o(n²)

o(n^1.5)

o(n²)

歸併排序

o(nlogn)

o(nlogn)

o(nlogn)

快速排序

o(nlogn)

o(nlogn)

o(n²)

js實現各種排序演算法

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

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...