PHP實現冒泡演算法,php冒泡演算法

來源:互聯網
上載者:User

PHP實現冒泡演算法,php冒泡演算法

我發現很多公司面試的時候都會出一道冒泡演算法的題,這麼基礎的演算法,一般程式員應該都寫得出來,但是今天我在網上看了一下,發現很多文章中的冒泡演算法都是錯的,根本就不是冒泡演算法!還堂而皇之的說什麼解析冒泡演算法,真是誤導新人啊。我就直接上代碼了,這,才是冒泡演算法。


<?phpfunction bubbleSort($ary){$len = count($ary);for ($i=0; $i < $len - 1; $i++) { for ($j=0; $j < $len - 1 -$i; $j++) { if ($ary[$j] > $ary[$j + 1]) {$tmp = $ary[$j];$ary[$j] = $ary[$j + 1];$ary[$j + 1] = $tmp;}}}return $ary;}$ary = [7,6,789,3,56,8,1234,45];$newAry = bubbleSort($ary);print_r($newAry);?>


好吧,下面我就說說,什麼不是冒泡演算法。

當然啦,首先要說說什麼才是冒泡演算法,它的作用是把一個亂序數組按照大小順序排列。實現原理我就直接拿個執行個體來說明吧。

$ary = [7,6,78,1];
把這個數組從小到大進行排列,首先把第一個數和第二個數進行比較,在這個數組裡就是7和6比較,7比6大,第一次迴圈後數組就變成這個樣子。

$ary = [6,7,78,1];
第二次迴圈7和78比較,結果不變。

$ary = [6,7,78,1];

第三次78和1比較,78比1大,調換位置,結果

$ary = [6,7,1,78];
這樣內部就迴圈完一次了,開始進行第二次迴圈,跟上面一樣的,我就不細寫了。

這就是冒泡演算法,名字起得非常形象,就像一個個小泡泡往上冒一樣。

但是我在百度搜尋“冒泡演算法”,出來的第一篇文章是這個

經典排序演算法 - 冒泡排序Bubble sort

他給出的代碼是這樣的:

static void bubble_sort(int[] unsorted)        {            for (int i = 0; i < unsorted.Length; i++)            {                for (int j = i; j < unsorted.Length; j++)                {                    if (unsorted[i] > unsorted[j])                    {                        int temp = unsorted[i];                        unsorted[i] = unsorted[j];                        unsorted[j] = temp;                    }                }            }        }        static void Main(string[] args)        {            int[] x = { 6, 2, 4, 1, 5, 9 };            bubble_sort(x);            foreach (var item in x)            {                Console.WriteLine(item);            }            Console.ReadLine();        }


這明顯不是冒泡演算法好嗎?!


這個演算法是從一個數組的第一個數開始,分別與他後面的所有數字比較,如果比後面的數字大,就互相調換位置,雖然最後也能得到正確結果,但這根本不是冒泡演算法,可能叫另一種演算法吧。真是誤人子弟。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.