1. 程式人生 > >十大經典排序演算法的 JS

十大經典排序演算法的 JS

(1)排序的定義:對一序列物件根據某個關鍵字進行排序;

輸入:n個數:a1,a2,a3,…,an
輸出:n個數的排列:a1’,a2’,a3’,…,an’,使得a1’

再講的形象點就是排排坐,調座位,高的站在後面,矮的站在前面咯。

(3)對於評述演算法優劣術語的說明

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

內排序:所有排序操作都在記憶體中完成;
外排序:由於資料太大,因此把資料放在磁碟中,而排序通過磁碟和記憶體的資料傳輸才能進行;

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

: 執行完一個程式所需記憶體的大小。

關於時間空間複雜度的更多瞭解請戳這裡(http://blog.csdn.net/booirror/article/details/7707551/),或是看書程傑大大編寫的《大話資料結構》還是很讚的,通俗易懂。

(4)排序演算法圖片總結(圖片來源於網路):

排序對比:


圖片名詞解釋:
n: 資料規模
k:“桶”的個數
In-place: 佔用常數記憶體,不佔用額外記憶體
Out-place: 佔用額外記憶體

排序分類:

1.氣泡排序(Bubble Sort)

好的,開始總結第一個排序演算法,氣泡排序。我想對於它每個學過C語言的都會了解的吧,這可能是很多人接觸的第一個排序演算法。

(1)演算法描述

氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。

(2)演算法描述和實現

具體演算法描述如下:

  • <1>.比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;

  • <2>.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數;

  • <3>.針對所有的元素重複以上的步驟,除了最後一個;

  • <4>.重複步驟1~3,直到排序完成。

JavaScript程式碼實現:

functionbubbleSort(arr){

varlen = arr.length;

for(vari = 0;i < len;i++){

for(varj = 0;j < len - 1 - i;j++){

if(arr[j] > arr[j+1]){//相鄰元素兩兩對比

vartemp = arr[j+1];//元素交換

arr[j+1] = arr[j];

arr[j] = temp;

}

}

}

returnarr;

}

vararr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];

console.log(bubbleSort(arr));//[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

改進氣泡排序: 設定一標誌性變數pos,用於記錄每趟排序中最後一次進行交換的位置。由於pos位置之後的記錄均已交換到位,故在進行下一趟排序時只要掃描到pos位置即可。

改進後演算法如下:

functionbubbleSort2(arr){

console

相關推薦

javascript經典排序演算法 js資料結構與演算法

排序演算法是《資料結構與演算法》中最基本的演算法之一 排序演算法中的複雜度與穩定性如下圖所示: 1.氣泡排序  氣泡排序(Bubble Sort)也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。

經典排序演算法JS

(1)排序的定義:對一序列物件根據某個關鍵字進行排序; 輸入:n個數:a1,a2,a3,…,an 輸出:n個數的排列:a1’,a2’,a3’,…,an’,使得a1’ 再講的形象點就是排排坐,調座位,高的站在後面,矮的站在前面咯。 (3)對於評述演算法優劣術語的說明 穩定:如果

js實現經典排序演算法(動圖演示)

0、演算法概述 0.1 演算法分類 十種常見排序演算法可以分為兩大類: 比較類排序:通過比較來決定元素間的相對次序

經典排序演算法(動圖演示) 經典排序演算法(動圖演示)

十大經典排序演算法(動圖演示)   0、演算法概述 0.1 演算法分類 十種常見排序演算法可以分為兩大類: 非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破O(nlogn),因此稱為非線性時間比較類排序。 線性

經典排序演算法詳細總結(含JAVA程式碼實現)

文章目錄 十大經典排序演算法詳細總結(含JAVA程式碼實現) 0、排序演算法說明 1、氣泡排序(Bubble Sort) 2、選擇排序(Selection Sort) 3、插入排序(Insertion Sort) 4、希爾

排序演算法的實現 經典排序演算法最強總結(含JAVA程式碼實現)

十大經典排序演算法最強總結(含JAVA程式碼實現)   最近幾天在研究排序演算法,看了很多部落格,發現網上有的文章中對排序演算法解釋的並不是很透徹,而且有很多程式碼都是錯誤的,例如有的文章中在“桶排序”演算法中對每個桶進行排序直接使用了Collection.sort

動畫+原理+程式碼,解讀經典排序演算法

來源:https://github.com/hustcc/JS-Sorting-Algorithm 排序演算法是《資料結構與演算法》中最基本的演算法之一。 排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在

買什麼資料結構與演算法,這裡有:動態圖解經典排序演算法(含JAVA程式碼實現)

上篇的動圖資料結構反響不錯,這次來個動圖排序演算法大全。資料結構與演算法,齊了。 幾張動態圖捋清Java常用資料結構及其設計原理 本文將採取動態圖+文字描述+正確的java程式碼實現來講解以下十大排序演算法: 氣泡排序 選擇排序 插入排序 希爾排序

經典排序演算法之選擇排序(Selection Sort)

選擇排序(Selection-sort)是一種簡單直觀的排序演算法。 它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。  2.1 演算法描

經典排序演算法(附程式)

轉自https://www.cnblogs.com/onepixel/articles/7674659.html 0、演算法概述 0.1 演算法分類 十種常見排序演算法可以分為兩大類: 非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破O(nlog

經典排序演算法動畫,看我就夠了!

點選上方“程式人生”,選擇“置頂公眾號” 第一時間關注程式猿(媛)身邊的故事 圖片源自:モブサイコ100 作者 程式設計師小吳 如需轉載,請聯絡我們。 在前面的章節中詳細的講解分析了十大經典排序演算法,本文將進行一個大總結。 Tip&n

經典排序演算法動畫與解析,看我就夠了!(配程式碼完全版)

GitHub Repo:Sort Article Follow: MisterBooo · GitHub 排序演算法是《資料結構與演算法》中最基本的演算法之一。 排序演算法可以分為內部排序和外部排序。 內部排序是資料記錄在記憶體中進行排序。 而外部排序是因排序的資料很大,一次不能容納全部的排

經典排序演算法之插入排序(Insertion Sort)

插入排序(Insertion-Sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到O(1)的額外空間的排序),因而在從後向前掃描過程中,需要反覆

經典排序演算法

@Author : Spinach | GHB @Link : http://blog.csdn.net/bocai8058 0 演算法概述 0.1 演算法分類 十種常見排序演算法可以分為兩大類: 非線性時間比較類排序:通過比較來決定元素間的相對

經典排序演算法(動圖演示,收藏好文)

js和java兩版 目錄 十大經典排序演算法(動圖演示) 0.1 演算法分類 十種常見排序演算法可以分為兩大類: 非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破O(nlogn),因此

PHP實現經典排序演算法

演算法概述 01、演算法分類: 十種常見排序演算法可以分為兩大類: 非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破O(nlogn),因此稱為非線性時間比較類排序。 線性時間非比較類排序:不通過比較來決定元素間的相對次序,它可以突破基於

經典排序演算法總結——Java實現

轉自:https://blog.csdn.net/wangqyoho/article/details/52584640#t5 引 這段時間博主逐步替換為Java的實現 //博主留 2017.9.15 //2017.10.10完成氣泡排序的修改

經典排序演算法 講解,python3實現

接受各位指出的錯誤 重點推薦!!! 這個網址可以看到各個演算法的執行的直觀過程,找到sort 勉強推薦這個吧,前面的幾個演算法圖解還好,後面的幾個就不好了 演算法概述 這部分內容來自這麼大牛 演算法分類 十種常見排序演算法可以分為兩大類: 非線性時間比較類排序:通過

經典排序演算法(Java實現)

import java.util.ArrayList; import java.util.Arrays; /** * @author lollipop * @email [email protected] * @date 2018/11/22 0022 8:36 *

經典排序演算法詳細總結 圖形展示 程式碼示例

文章目錄 十大經典排序演算法詳細總結 0、排序演算法說明 1、氣泡排序(Bubble Sort) 2、選擇排序(Selection Sort) 3、插入排序(Insertion Sort) 4、希爾排序(Shell Sort)