摘要:導語冒泡排序是相對比較簡單常用的算法,同時在面試中也是最常被問到的問題。冒泡排序對個項目需要的比較次數(shù),且可以原地排序。冒泡排序算法的運作如下比較相鄰的元素。
導語
冒泡排序是相對比較簡單、常用的算法,同時在面試中也是最常被問到的問題。自認能力不夠,不能有更深的理解,下面就把一些資料中的內(nèi)容記錄下來,文末有原文鏈接。
冒泡排序冒泡排序(英語:Bubble Sort)是一種簡單的排序算法。它重復地走訪過要排序的數(shù)列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數(shù)列的工作是重復地進行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個算法的名字由來是因為越小的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端。
冒泡排序對 n 個項目需要 O(n2) 的比較次數(shù),且可以原地排序。盡管這個算法是最簡單了解和實現(xiàn)的排序算法之一,但它對于包含大量的元素的數(shù)列排序是很沒有效率的。
冒泡排序算法的運作如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。這步做完后,最后的元素會是最大的數(shù)。
針對所有的元素重復以上的步驟,除了最后一個。
持續(xù)每次對越來越少的元素重復上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。
以上是維基百科中的介紹,可以看到,原理并不復雜。但是在數(shù)據(jù)量大時,不是一個很好的選擇。
動圖演示需要注意的是,下圖與實例中的代碼,順序是相反的。
$arr[$k]) { // 前者大于后者,調(diào)換位置 // 如果想要按照從大到小進行排序,改為 $arr[$i] < $arr[$k] $temp = $arr[$i]; $arr[$i] = $arr[$k]; $arr[$k] = $temp; } } } return $arr; } print_r(bubbleSort($arr)); // Array ( [0] => 2 [1] => 3 [2] => 8 [3] => 16 [4] => 21 [5] => 23 [6] => 24 [7] => 32 [8] => 33 )
參考資料:冒泡排序、PHP冒泡排序(Bubble Sort)算法詳解、GIF演示排序算法。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30030.html
摘要:一冒泡排序原理對一組數(shù)據(jù),比較相鄰數(shù)據(jù)的大小,將值小數(shù)據(jù)在前面,值大的數(shù)據(jù)放在后面。通過以上五輪排序,若干次比較,我們有理由推斷出一個結論對于一個長度為的數(shù)組,我們需要排序輪,每輪要比較次。 一、冒泡排序 原理:對一組數(shù)據(jù),比較相鄰數(shù)據(jù)的大小,將值小數(shù)據(jù)在前面,值大的數(shù)據(jù)放在后面。 (以下都是升序排列,即從小到大排列) 舉例說明: $arr = array(6, 3, 8,...
摘要:良好的排序算法具有進行最少的比較和交換的特征。冒泡排序是一個基于比較的排序算法,被認為是效率最低的排序算法之一。現(xiàn)在讓我們使用實現(xiàn)冒泡排序算法。插入排序到目前為止,我們已經(jīng)看到了兩種基于比較的排序算法。 預警 本文適合對于排序算法不太了解的新手同學觀看,大佬直接忽略即可。因為考慮到連貫性,所以篇幅較長。老鐵們看完需要大概一個小時,但是從入門到完全理解可能需要10個小時(哈哈哈,以我自己...
摘要:概念這里借用百度百科的一張圖來,非常形象快速排序算法是對冒泡算法的一個優(yōu)化。獲取已經(jīng)打亂了順序的數(shù)組快速排序這里引用的是我之前寫的冒泡算法排序冒泡運行結果 概念 這里借用百度百科的一張圖來,非常形象:showImg(https://segmentfault.com/img/bVdlR6); 快速排序算法是對冒泡算法的一個優(yōu)化。他的思想是先對數(shù)組進行分割, 把大的元素數(shù)值放到一個臨時數(shù)...
摘要:本文將介紹快速排序計數(shù)排序梳排序堆排序歸并排序希爾排序選擇排序插入排序地精排序聯(lián)合冒泡排序雞尾酒排序冒泡排序奇偶排序使用標志的冒泡排序種排序算法的實現(xiàn)。是一種不穩(wěn)定的排序算法。 本文將介紹快速排序、計數(shù)排序、梳排序、堆排序、歸并排序、希爾排序、選擇排序、插入排序、地精排序、聯(lián)合冒泡排序、雞尾酒排序、冒泡排序、奇偶排序、使用標志的冒泡排序14種排序算法的實現(xiàn)。本文是由于閱讀了文章《測試評...
摘要:它的基本思想是通過一趟排序將要排序的數(shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分數(shù)據(jù)分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數(shù)據(jù)變成有序序列。 選擇排序 選擇排序主要是將假設數(shù)組中的第一個是最小的,循環(huán)與數(shù)組中的第一個進行比較 如果比其還小 則記錄下標 進行數(shù)值交換 效率相對冒泡來說比較高 function s...
閱讀 3319·2021-11-08 13:12
閱讀 2756·2021-10-15 09:41
閱讀 1451·2021-10-08 10:05
閱讀 3300·2021-10-08 10:04
閱讀 2102·2021-09-29 09:34
閱讀 2472·2019-08-30 15:55
閱讀 2979·2019-08-30 15:45
閱讀 2577·2019-08-29 14:17