快速排序時(shí)最常用的排序算法,和歸并排序一樣也是采用分治方法,但沒有把數(shù)組分割開,也是將原數(shù)組分成較小的數(shù)組。 1、從數(shù)組的中間選擇一項(xiàng)作為主元。 2、創(chuàng)建兩個(gè)指針,left ...

快速排序時(shí)最常用的排序算法,和歸并排序一樣也是采用分治方法,但沒有把數(shù)組分割開,也是將原數(shù)組分成較小的數(shù)組。 1、從數(shù)組的中間選擇一項(xiàng)作為主元。 2、創(chuàng)建兩個(gè)指針,left ...
歸并排序是一種分治算法,分而治之,將原始數(shù)組拆分成最小粒度的數(shù)組(數(shù)組的長度是1),接著將這些小數(shù)組進(jìn)行歸并(merge),直到成為一個(gè)排序好的大數(shù)組。 歸并排序代碼實(shí)現(xiàn): ...
插入排序每次排一個(gè)數(shù)組項(xiàng),類似平時(shí)抓牌的模式,假設(shè)第一項(xiàng)已經(jīng)是排好序的,接著第二項(xiàng)和第一項(xiàng)比較,如果第二項(xiàng)比第一項(xiàng)小,則第二項(xiàng)插入第一項(xiàng),以此類推,選中接下來的數(shù),和前面已經(jīng)...
選擇排序是一種比較原址的比較排序算法。先找到數(shù)據(jù)結(jié)構(gòu)中最小值并放在第一位,接著找到第二小的值放在第二位 選擇排序的算法實(shí)現(xiàn): function SelectSort() { ...
冒泡排序比較任何兩個(gè)相鄰的數(shù),如果第一個(gè)數(shù)比第二個(gè)數(shù)大,則交換這兩個(gè)數(shù),元素向上移動(dòng)至正確的位置。 冒泡排序的算法實(shí)現(xiàn): function BubbleSort() { ...
散列集合是由一個(gè)集合構(gòu)成,但是插入、移除、或獲取元素時(shí),使用的是散列函數(shù) 散列表的代碼實(shí)現(xiàn) // 散列表 function LinkedList() { var Node...
在字典中存儲(chǔ)的值是【鍵、值】對(duì),字典和集合很相似,集合以【值、值】的形式存儲(chǔ)。字典也稱作映射。 字典的代碼實(shí)現(xiàn): function Dictionary() { var ...
集合是由一組無序且唯一的項(xiàng)組成的: 集合可以進(jìn)行 并集、交集、差集、子集操作。 集合的代碼實(shí)現(xiàn): function Set() { var items = {}; t...
雙向鏈表和普通鏈表的區(qū)別是,普通鏈表中一個(gè)節(jié)點(diǎn)只有一個(gè)next指針指向下一個(gè)節(jié)點(diǎn),雙向鏈表有2個(gè)指針,一個(gè)指向下一個(gè)節(jié)點(diǎn),一個(gè)指向前面一個(gè)節(jié)點(diǎn)。 雙向鏈表的代碼實(shí)現(xiàn): fun...
實(shí)現(xiàn)一個(gè)鏈表還需要一個(gè)輔助的類:Node,Node對(duì)象有2個(gè)屬性,element :當(dāng)前元素;next:指向下一個(gè)對(duì)象的指針。 鏈表的實(shí)現(xiàn): function LinkedL...
元素的添加是基于優(yōu)先級(jí)的。 function PriorityQueue() { var items = []; function QueueElement(elem...
隊(duì)列遵循FIFO(First In First Out, 先進(jìn)先出)。常見的隊(duì)列的例子就是排隊(duì) 實(shí)現(xiàn)一個(gè)隊(duì)列的數(shù)據(jù)結(jié)構(gòu): function Queue() { var i...
棧是一種遵循后進(jìn)先出(LIFO last in first out)原則的有序集合,新添加或待刪除的元素都保存在棧的末尾,成為棧頂,另一端叫棧底。 實(shí)現(xiàn)一個(gè)棧的數(shù)據(jù)結(jié)構(gòu): f...