JS常見的排序演算法

2021-08-20 06:39:51 字數 2238 閱讀 9032

先簡單的來了解一下何謂演算法。

在電腦科學與數學中,乙個排序演算法(英語:sorting algorithm)是一種能將一串資料依照特定排序方式進行排列的一種演算法

最常用到的排序方式是數值順序以及字典順序。

有效的排序演算法在一些演算法(例如搜尋演算法與合併演算法)中是重要的, 如此這些演算法才能得到正確解答。

排序演算法也用在處理文字資料以及產生人類可讀的輸出結果。

基本上,排序演算法的輸出必須遵守下列兩個原則:

一、輸出結果為遞增序列(遞增是針對所需的排序順序而言);

二、輸出結果是原輸入的一種排列、或是重組;

雖然排序演算法是乙個簡單的問題,但是從電腦科學發展以來,在此問題上已經有大量的研究。 更多的新演算法仍在不斷的被發明。

查詢和排序演算法是演算法的入門知識,其經典思想可以用於很多演算法當中。

因為其實現**較短,應用較常見。 所以在面試中經常會問到排序演算法及其相關的問題。

但萬變不離其宗,只要熟悉了思想,靈活運用也不是難事。

一般在面試中最常考的是快速排序和氣泡排序,並且經常有面試官要求現場寫出這兩種排序的**。

除此之外,還有洗牌演算法,插入排序、氣泡排序、堆排序、基數排序、桶排序等。

快速排序、冒泡演算法、選擇排序、插入排序、希爾排序、歸併排序

演算法的特點:

1.有限性(finiteness):乙個演算法必須保證執行有限步之後結束。

2.確切性(definiteness): 乙個演算法的每一步驟必須有確切的定義。

3.輸入(input):乙個演算法有零個或多個輸入,以刻畫運算物件的初始情況,所謂零個輸入是指演算法本身給定了初始條件。

4.輸出(output):乙個演算法有乙個或多個輸出。沒有輸出的演算法毫無意義。

5.可行性(effectiveness):演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性)。

首先詳細解釋下快排和冒泡,因為我暫時只學了這2種。

一:快速排序

思想:快速排序思想:先找到乙個基準點(一般指數組的中部),然後陣列被該基準點分為兩部分,依次與該基準點資料比較,如果比它小,放左邊;反之,放右邊。 左右分別用乙個空陣列去儲存比較後的資料。最後遞迴執行上述操作,直到陣列長度<=1;

特點:快速,常用。缺點是需要另外宣告兩個陣列,浪費了記憶體空間資源。

二:氣泡排序

思想:氣泡排序思想:每一次對比相鄰兩個資料的大小,小的排在前面,如果前面的資料比後面的大就交換這兩個數的位置

這樣一來,第一輪就可以選出乙個最小的數放在最後面;那麼經過n-1輪,就完成了所有數的排序

要實現上述規則需要用到兩層for迴圈,外層從第乙個數到倒數第二個數,內層從外層的後面乙個數到最後乙個數

特點:排序演算法的基礎。簡單實用易於理解,缺點是比較次數多,效率較低。

氣泡排序演算法

let x =

0;for (let

i =0; i < arr.length -

1; i++) else {

right.push(arr[i]); //如果大於中數 就放入右邊的陣列

console

.log("第"

+++x +

"次")

console

.log("小陣列"

+ left);

console

.log("大陣列"

+ right);

return

quicksort(left).concat(middle_num, quicksort(right));

//遞迴無限迴圈 呼叫自身對left和right排序 然後返回結果

console

.log(quicksort(arr));

怎麼理解各種排序演算法的時間複雜度和空間複雜度?

演算法優劣評價術語

穩定性:

穩定:如果 a 原本在 b 前面,而 a = b,排序之後 a 仍然在 b 的前面;

不穩定:如果 a 原本在 b 的前面,而 a = b,排序之後 a 可能會出現在 b 的後面;

排序方式:

內排序:所有排序操作都在記憶體中完成,占用常數記憶體,不占用額外記憶體。

外排序:由於資料太大,因此把資料放在磁碟中,而排序通過磁碟和記憶體的資料傳輸才能進行,占用額外記憶體。

複雜度:

時間複雜度: 乙個演算法執行所耗費的時間。

空間複雜度: 執行完乙個程式所需記憶體的大小。

**)js的十大經典演算法排序

**)js實現兩種實用的排序演算法——冒泡、快速排序

JS常見的排序演算法

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

js常見的排序演算法

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

js常見的排序演算法

最近面試可能會問這些 1,插入排序 function sort elements return res function one arr,x arr i x temp true break temp arr.push x return arr 簡單來說就是插入乙個數,在結果裡找他插入的位置。位置怎麼...