-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
網(wǎng)頁排序算法有哪些(網(wǎng)頁排序算法有哪些方法)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于網(wǎng)頁排序算法有哪些的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com
創(chuàng)意嶺作為行業(yè)內優(yōu)秀企業(yè),服務客戶遍布全國,網(wǎng)絡營銷相關業(yè)務請撥打175-8598-2043,或微信:1454722008
本文目錄:
一、前端總結算法之十大排序
1, 相鄰之間相比較,左邊比右邊大的話,交換位置。
2,第一輪下來,已經(jīng)把最大的值選出來,并排在最后位,這樣剩下需排序的的數(shù)組減1,依次類推。
1,找一個基準點(一般是中間數(shù))
2,和基準值比較,比基準值小放leftList,比基準值大放rightList
3,遞歸執(zhí)行上述操作,直到arr.length <= 1
1,找到數(shù)組中最小值的索引
2,把最小值排到第一位來。以此類推
類似我們打撲克牌,牌從左向右的排序,抽出一張牌插到合適的位置放。
1,抽出位置1的牌,與位置0比較,當位置0的牌比1大時, 先把0的值填入位置1。剩下0位置插入。
2,抽出位置2的牌,與前面位置1比較,當位置1比2大時,先把1的值填入2位置,位置1空出。往下一層比較,找到合適的位置。依次類推。
1,按一定的間隔對數(shù)組進行分組,一般以數(shù)組長度一半 gap = length / 2 (ps:也可以是3,4,無強性要求)
(假如:數(shù)組長度為10的話gap = 10 / 2 = 5,也就是,位置0和5為一組,位置1和6位一組...,組里的值進行插入排序)
2,以gap的一半進行縮小 gap = gap / 2
(此時:gap = Math.floor(5 / 2) = 2 向下取整,也就是,位置0和位置2為一組,位置1和3為一組..,組里的值進行插入排序)
3,當gap === 1時,此時所有元素為一組,此時運行的就是我們一般的插入排序了。
這樣處理的好處是:希爾排序的優(yōu)化使得原本 O(n^2) 的時間復雜度一下降為 O(nlogn)
采用分治思想
1,先把數(shù)組從中間分開,
[5, 4, 8, 2, 1, 9, 7, 3, 6, 0]
[5, 4, 8, 2, 1] [9, 7, 3, 6, 0]
[5, 4, 8] [2, 1] [9, 7, 3] [6, 0]
[5, 4] [8] [2] [1] [9, 7] [3] [6] [0]
[5] [4] [9] [7]
2,分別比較合并
[4, 5]
[4, 5, 8] [1, 2]
[1, 2, 4, 5, 8]
...
1,構建堆,堆頂是最大的元素(子結點的鍵值或索引總是小于(或者大于)它的父節(jié)點)
2,把最大的元素交換到堆頂,然后把堆頂跟交換到數(shù)組后面,數(shù)組減1,依次重復。
采用分治思想(ps:把數(shù)組分成若干小份,排好每小份,在拼接起來)
1, 定義一個桶的大?。ㄒ粋€桶能裝下幾個值)
2,根據(jù)數(shù)組的長度,計算需要幾個桶,每個桶都是小的數(shù)組,組成二維數(shù)組
3,往桶里放數(shù)據(jù)
4,每個桶的數(shù)組使用插入排序
5,把每個桶的數(shù)據(jù)拼接起來
1,找出最大和最小元素。
2,統(tǒng)計每個元素出現(xiàn)的次數(shù),以元素的值為索引,次數(shù)為value。
3,對所有計數(shù)開始累加,從min開始,每一項和前一項相加(加起來最后一個的值是數(shù)組的長度,用于下一步值的填充)
4,反向填充目標數(shù)組,將每個元素i放在新數(shù)組的第C[i]項,每放一個元素,計數(shù)-1
適用,例如當你的數(shù)很大,如手機號碼,的排序
1, 先按排序個位數(shù),以各位的值為key, 這個的值為value, 進行按各位的排序
2,排好個位數(shù)后,用排好的數(shù)組在按十位數(shù)排,以十位數(shù)的值為key, 這個值為value, 進行按十位的排序,依次類推
二、常見排序算法有哪些
常用的排序算法有:冒泡排序、選擇排序、堆排序、SHELL排序、快速排序、歸并排序、磁盤排序等等。但是每種排序算法都是各有優(yōu)缺點。如果需要進一步研究各種算法的性能的話,那么就必須學習計算機算法和復雜性這門課程。
三、常用的排序算法都有哪些?
排序算法 所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。
分類
在計算機科學所使用的排序算法通常被分類為:
計算的復雜度(最差、平均、和最好表現(xiàn)),依據(jù)串列(list)的大?。╪)。一般而言,好的表現(xiàn)是O。(n log n),且壞的行為是Ω(n2)。對於一個排序理想的表現(xiàn)是O(n)。僅使用一個抽象關鍵比較運算的排序算法總平均上總是至少需要Ω(n log n)。
記憶體使用量(以及其他電腦資源的使用)
穩(wěn)定度:穩(wěn)定排序算法會依照相等的關鍵(換言之就是值)維持紀錄的相對次序。也就是一個排序算法是穩(wěn)定的,就是當有兩個有相等關鍵的紀錄R和S,且在原本的串列中R出現(xiàn)在S之前,在排序過的串列中R也將會是在S之前。
一般的方法:插入、交換、選擇、合并等等。交換排序包含冒泡排序(bubble sort)和快速排序(quicksort)。選擇排序包含shaker排序和堆排序(heapsort)。
當相等的元素是無法分辨的,比如像是整數(shù),穩(wěn)定度并不是一個問題。然而,假設以下的數(shù)對將要以他們的第一個數(shù)字來排序。
(4, 1) (3, 1) (3, 7) (5, 6)
在這個狀況下,有可能產(chǎn)生兩種不同的結果,一個是依照相等的鍵值維持相對的次序,而另外一個則沒有:
(3, 1) (3, 7) (4, 1) (5, 6) (維持次序)
(3, 7) (3, 1) (4, 1) (5, 6) (次序被改變)
不穩(wěn)定排序算法可能會在相等的鍵值中改變紀錄的相對次序,但是穩(wěn)定排序算法從來不會如此。不穩(wěn)定排序算法可以被特別地時作為穩(wěn)定。作這件事情的一個方式是人工擴充鍵值的比較,如此在其他方面相同鍵值的兩個物件間之比較,就會被決定使用在原先資料次序中的條目,當作一個同分決賽。然而,要記住這種次序通常牽涉到額外的空間負擔。
排列算法列表
在這個表格中,n是要被排序的紀錄數(shù)量以及k是不同鍵值的數(shù)量。
穩(wěn)定的
冒泡排序(bubble sort) — O(n2)
雞尾酒排序 (Cocktail sort, 雙向的冒泡排序) — O(n2)
插入排序 (insertion sort)— O(n2)
桶排序 (bucket sort)— O(n); 需要 O(k) 額外 記憶體
計數(shù)排序 (counting sort) — O(n+k); 需要 O(n+k) 額外 記憶體
歸并排序 (merge sort)— O(n log n); 需要 O(n) 額外記憶體
原地歸并排序 — O(n2)
二叉樹排序 (Binary tree sort) — O(n log n); 需要 O(n) 額外記憶體
鴿巢排序 (Pigeonhole sort) — O(n+k); 需要 O(k) 額外記憶體
基數(shù)排序 (radix sort)— O(n·k); 需要 O(n) 額外記憶體
Gnome sort — O(n2)
Library sort — O(n log n) with high probability, 需要 (1+ε)n 額外記憶體
不穩(wěn)定
選擇排序 (selection sort)— O(n2)
希爾排序 (shell sort)— O(n log n) 如果使用最佳的現(xiàn)在版本
Comb sort — O(n log n)
堆排序 (heapsort)— O(n log n)
Smoothsort — O(n log n)
快速排序 (quicksort)— O(n log n) 期望時間, O(n2) 最壞情況; 對於大的、亂數(shù)串列一般相信是最快的已知排序
Introsort — O(n log n)
Patience sorting — O(n log n + k) 最外情況時間, 需要 額外的 O(n + k) 空間, 也需要找到最長的遞增子序列(longest increasing subsequence)
不實用的排序算法
Bogo排序 — O(n × n!) 期望時間, 無窮的最壞情況。
Stupid sort — O(n3); 遞回版本需要 O(n2) 額外記憶體
Bead sort — O(n) or O(√n), 但需要特別的硬體
Pancake sorting — O(n), 但需要特別的硬體
排序的算法
排序的算法有很多,對空間的要求及其時間效率也不盡相同。下面列出了一些常見的排序算法。這里面插入排序和冒泡排序又被稱作簡單排序,他們對空間的要求不高,但是時間效率卻不穩(wěn)定;而后面三種排序相對于簡單排序對空間的要求稍高一點,但時間效率卻能穩(wěn)定在很高的水平?;鶖?shù)排序是針對關鍵字在一個較小范圍內的排序算法。
插入排序
冒泡排序
選擇排序
快速排序
堆排序
歸并排序
基數(shù)排序
希爾排序
插入排序
插入排序是這樣實現(xiàn)的:
首先新建一個空列表,用于保存已排序的有序數(shù)列(我們稱之為"有序列表")。
從原數(shù)列中取出一個數(shù),將其插入"有序列表"中,使其仍舊保持有序狀態(tài)。
重復2號步驟,直至原數(shù)列為空。
插入排序的平均時間復雜度為平方級的,效率不高,但是容易實現(xiàn)。它借助了"逐步擴大成果"的思想,使有序列表的長度逐漸增加,直至其長度等于原列表的長度。
冒泡排序
冒泡排序是這樣實現(xiàn)的:
首先將所有待排序的數(shù)字放入工作列表中。
從列表的第一個數(shù)字到倒數(shù)第二個數(shù)字,逐個檢查:若某一位上的數(shù)字大于他的下一位,則將它與它的下一位交換。
重復2號步驟,直至再也不能交換。
冒泡排序的平均時間復雜度與插入排序相同,也是平方級的,但也是非常容易實現(xiàn)的算法。
選擇排序
選擇排序是這樣實現(xiàn)的:
設數(shù)組內存放了n個待排數(shù)字,數(shù)組下標從1開始,到n結束。
i=1
從數(shù)組的第i個元素開始到第n個元素,尋找最小的元素。
將上一步找到的最小元素和第i位元素交換。
如果i=n-1算法結束,否則回到第3步
選擇排序的平均時間復雜度也是O(n²)的。
快速排序
現(xiàn)在開始,我們要接觸高效排序算法了。實踐證明,快速排序是所有排序算法中最高效的一種。它采用了分治的思想:先保證列表的前半部分都小于后半部分,然后分別對前半部分和后半部分排序,這樣整個列表就有序了。這是一種先進的思想,也是它高效的原因。因為在排序算法中,算法的高效與否與列表中數(shù)字間的比較次數(shù)有直接的關系,而"保證列表的前半部分都小于后半部分"就使得前半部分的任何一個數(shù)從此以后都不再跟后半部分的數(shù)進行比較了,大大減少了數(shù)字間不必要的比較。但查找數(shù)據(jù)得另當別論了。
堆排序
堆排序與前面的算法都不同,它是這樣的:
首先新建一個空列表,作用與插入排序中的"有序列表"相同。
找到數(shù)列中最大的數(shù)字,將其加在"有序列表"的末尾,并將其從原數(shù)列中刪除。
重復2號步驟,直至原數(shù)列為空。
堆排序的平均時間復雜度為nlogn,效率高(因為有堆這種數(shù)據(jù)結構以及它奇妙的特征,使得"找到數(shù)列中最大的數(shù)字"這樣的操作只需要O(1)的時間復雜度,維護需要logn的時間復雜度),但是實現(xiàn)相對復雜(可以說是這里7種算法中比較難實現(xiàn)的)。
看起來似乎堆排序與插入排序有些相像,但他們其實是本質不同的算法。至少,他們的時間復雜度差了一個數(shù)量級,一個是平方級的,一個是對數(shù)級的。
平均時間復雜度
插入排序 O(n2)
冒泡排序 O(n2)
選擇排序 O(n2)
快速排序 O(n log n)
堆排序 O(n log n)
歸并排序 O(n log n)
基數(shù)排序 O(n)
希爾排序 O(n1.25)
冒泡排序
654
比如說這個,我想讓它從小到大排序,怎么做呢?
第一步:6跟5比,發(fā)現(xiàn)比它大,則交換。564
第二步:5跟4比,發(fā)現(xiàn)比它大,則交換。465
第三步:6跟5比,發(fā)現(xiàn)比它大,則交換。456
四、請問 排序算法 可以分為哪幾大類?
排序可分為:
1,穩(wěn)定排序與不穩(wěn)定排序
2,內排序和外排序
內部排序可分為:直接插入排序、冒泡排序、簡單選擇排序、希爾排序、快速排序、堆排序、歸并排序、基數(shù)排序。
以上就是關于網(wǎng)頁排序算法有哪些相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內容。
推薦閱讀:
網(wǎng)頁點擊量統(tǒng)計(網(wǎng)頁點擊量統(tǒng)計截圖)
抖音數(shù)據(jù)羅盤在哪里打開(抖音羅盤數(shù)據(jù)分析)
問大家
如東著名的網(wǎng)頁美工設計哪家服務好?在座的同學們跪求回答
泰興人性化的網(wǎng)頁美工設計大概是多少錢?在座的老鄉(xiāng)們幫回答下
web前端設計工程師與網(wǎng)頁設計師有什么區(qū)別?
清遠服務周到的網(wǎng)頁美工設計近期什么價格?諸位大哥大姐們跪求解答
晉江值得選擇的網(wǎng)頁美工設計哪個靠譜點?各位看官們拜托了
邳州比較好的網(wǎng)頁美工設計費用多少錢?在座的筒子們幫忙回一下
電商設計,網(wǎng)頁設計,影視后期,哪個好,工資待遇高,門檻低點?
連云港誠信的網(wǎng)頁美工設計商戶電話怎么找?各位老板們有沒有誰了解