javascript演算法排序

2021-08-07 02:56:59 字數 1363 閱讀 5319

一、氣泡排序

思路:1. 依次比較相鄰的兩個數,如果第乙個比第二個小,則位置不變,如果第乙個比第二個大,則位置調換,

一輪下來,最後乙個是最大的數

2.對除了最後乙個之外的數重複第一步,直到只剩乙個數

// 氣泡排序

var arr = [1,5,3,9,4];

for(var i = arr.length-1; i>0; i--)

}console.log(arr); }

二、選擇排序

思路:1.找出最小的數,和第乙個交換位置

2.在剩下的位置中,找出第二小的數,放在第二個

3.依次類推

//選擇排序

var arr2 = arr;

for(var i = 0; i

for(var j =i; j

var max = 0;

if(arr2[i]>arr2[j])

}console.log("選擇排序:"+arr2) }

三、插入排序

思路:1.把陣列分為【已排序】和【未排序】兩部分,第乙個數為【已排序】,其餘為【未排序】

2.從【未排序】抽出第乙個數,和【已排序】部分進行比較,插入到合適的位置

//插入排序

var arr3 = [8,12,1,5,3,9,4];

for(var i = 0; ifor(var j = i; j > 0; j--) }

console.log("插入排序:"+arr3); }

四、合併排序

思路:1.不斷將陣列對半分,知道每乙個陣列只有乙個

2.將分出來的部分重新合併

3.合併的時候按順序排列

五、快速排序

思路:1.以乙個數為基準,比這個數小的放在左邊,比這個數大的放在右邊

2.再按此方法對著兩部分資料分別進行快速排序

關於以上演算法的時間複雜度和空間複雜度

排序法最差時間分析

平均時間複雜度

穩定度空間複雜度

氣泡排序

o(n2)

o(n2)

穩定o(1)

快速排序

o(n2)

o(n*log2n)

不穩定o(log2n)~o(n)

選擇排序

o(n2)

o(n2)

穩定o(1)

二叉樹排序

o(n2)

o(n*log2n)

不穩定o(n)

插入排序

o(n2)

o(n2)

穩定o(1)

堆排序o(n*log2n)

o(n*log2n)

不穩定o(1)

希爾排序oo

不穩定o(1)

JavaScript排序演算法

從前到後兩兩比較,把較大的換到後面,直到最後。function bubblesort arr return arr 在未排序佇列中找到最小或最大元素,和第一位數交換。然後找剩下的未排序的最小或最大元素和第二位數交換 function selectionsort arr temp arr i arr ...

javascript排序 查詢演算法大全

在pptv的實習結束了,忙著找工作的事,順便把資料結構的那本書重新複習了一遍。為了加深印象,特意把裡面的常用的排序 查詢演算法用js寫了一遍 具體的例項在我的github上,大家可以訪問的 js sort.html檔案 js插入排序 function insertsort arr else retu...

經典演算法 快速排序 javascript

1.在資料集之中,找乙個基準點 2.建立兩個陣列,分別儲存左邊和右邊的陣列 3.利用遞迴進行下次比較 方式一 array.prototype.quick sort function 方式二 var quicksort2 function array else return false 使用時也可以直...