js排序演算法

2022-07-25 20:54:15 字數 1598 閱讀 4128

1. 氣泡排序

思想:比較相鄰的兩個元素,如前乙個比後乙個大,則交換位置

第一輪的最後乙個元素應該是最大的元素

按照步驟1的方法比較相鄰兩個元素,這個時候因為最後乙個元素已經是最大的了,所以最後乙個元素不用比較

總共比較 n-1次

雙重迴圈,所以平均複雜度和最壞的複雜度均是是o(n^2),最好的情況是已經排好序的,所以只遍歷一次就可以了,所以是o(n)

**function sort(arr) }}

}var arr = [3,1,5,7,2,4,9,6]

console.log('排序前:'+arr);

sort(arr)

console.log('排序後:'+arr);

2. 快速排序

快排的思想:

通過一趟排序將待排記錄分成獨立的兩個部分,左邊元素均比樞紐元素小,右邊元素均比樞紐元素大,之後再對這兩部分繼續排序,直到整個序列有序。(面試有問到)

其實該排序有三種思路,以下的**是第三種思路,也就是根據阮一峰老師的思路寫的

function sort(arr)

var mid = parseint(arr.length / 2)

var left = ,right =

var pivot = arr.splice(mid,1)[0]

arr.foreach(item => else

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

}var arr = [3,1,5,7,2,4,9,6]

console.log('排序前:'+arr);

console.log('排序後:'+sort(arr));

該方法並不是原地排序。並沒有改變原陣列,而是將排好序的元素組返回成乙個新陣列。

若想改變元素組,可以採取第一種思路,雙指標

function sort(arr, from, to)

while (i < j && arr[i] < pivot)

if (i < j)

}[arr[i], pivot] = [pivot, arr[i]]

sort(arr, from, i-1)

sort(arr, i + 1, to)

}var arr = [3, 1, 5, 7, 2, 4, 9, 6]

console.log('排序前:' + arr);

sort(arr,0,arr.length-1)

console.log('排序後:' + arr);

時間複雜度最好和平均均為o(nlgn),最壞為o(n^2)

3. 選擇排序

時間複雜度均為o(n^2)

var arr = [3,5,8,5,2,9]

var index = 0

for(var i = 0;iindex = i

for(var j = i+1;jif(arr[j] < arr[index])

}// 如果沒變的話,那就不用交換

if(index !== i)

}console.log(arr);

JS排序演算法

function insertsort arr endif status new date st ms return arr function shellsort arr while increment 1 status new date st ms return arr function shel...

排序演算法(JS)

自己整理一下資料結構的排序演算法,用js寫了一下,測試正確。插入排序 var table 32,26,87,72,26,17 for var i 0 i 0 temp0 alert i table 快速排序 快速排序是找出乙個元素 理論上可以隨便找乙個 作為基準 pivot 然後對陣列進行分割槽操作...

js排序演算法

常見內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序 快速排序 堆排序 技術排序等 從第乙個元素開始,該元素被當成已排序 取出下乙個元素,在已排序的元素序列中從後向前掃瞄 如果該元素大於新元素,將該元素移到下一位置 重複3步驟,直到找到已排序的元素小於或者等於新元素,將新元素插入到...