js常見的排序演算法

2022-02-22 06:51:15 字數 1963 閱讀 3783

最近面試可能會問這些

1,插入排序

function

sort(elements);

return

res;

}function

one(arr,x);

arr[i]=x;

temp = true

;

break

; }

}; !temp&&arr.push(x);

return

arr;

}

簡單來說就是插入乙個數,在結果裡找他插入的位置。位置怎麼找呢,比如我要插入乙個值,看一下哪個值比它大,那就插入到這個比他大的值的前面。遍歷一下陣列,往後諾位置。

2.氣泡排序

function

sort(arr)

} }}

3.快速排序

元素交換快排,但是用swap多宣告了乙個臨時變數tmp。

function quicksort(arr, left = 0, right = arr.length - 1)  

else

}if (arr[i] >privot)

else

return

arr;

}function

swap(arr, i, j)

var arr = [4, 13, 27, 38, 49, 49, 65, 55, 97, 76]

console.log(quicksort(arr));

下面這個是經典快拍,交換元素,空間複雜度最低。

function

quicksort(arr, left=0, right=arr.length)

arr[i]=privot;

quicksort(arr, left, i);

quicksort(arr, i+1, right);

return arr;

}

const qsort = arr => arr.length <= 1? arr: 

qsort(arr.filter(x => x < arr[0]))

.concat(arr.filter(x => x == arr[0]))

.concat(qsort(arr.filter(x => x > arr[0])))

以下是阮一峰版,比較好理解,但是splice已是o(n)的複雜度

var quicksort = function

(arr)

var pivotindex = math.floor(arr.length / 2);

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

var left =;

var right =;

for (var i = 0; i < arr.length; i++)

else

}  return

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

};

4希爾排序

function

shellsort(arr)

while(h>=1)

}h=(h-1)/3;} }

function swap(array, i, j)

5.歸併排序

function

merge(left, right)

else}/*

當左右陣列長度不等.將比較完後剩下的陣列項鏈結起來即可

*/return

re.concat(left).concat(right);}

function

mergesort(array)

mergesort(a);

JS常見的排序演算法

先簡單的來了解一下何謂演算法。在電腦科學與數學中,乙個排序演算法 英語 sorting algorithm 是一種能將一串資料依照特定排序方式進行排列的一種演算法 最常用到的排序方式是數值順序以及字典順序。有效的排序演算法在一些演算法 例如搜尋演算法與合併演算法 中是重要的,如此這些演算法才能得到正...

JS常見的排序演算法

前言 這裡是修真院前端小課堂,每篇分享文從 八個方面深度解析前端知識 技能,本篇分享的是 js常見的排序演算法 今天給大家分享一下,修真院官網js任務4,深度思考中的知識點 js常見的排序演算法 一 背景介紹 演算法 algorithm 是指解題方 而完整的描述,是一系列解決問題的清晰指令,演算法代...

js常見的排序演算法

冒泡演算法算是排序裡面比較基礎的一種演算法。它的實現原理為 從第乙個元素開始,將它與下乙個索引元素比較。如果當前元素的值比下乙個元素的值要大,則兩者交換位置,否則位置不變。接下來,索引往後移一位,繼續比較接下來兩個數的值。一直重複上面的操作,直到比較到最後乙個元素,因為大的元素位置會交換位置向後移,...