亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

排序算法之PHP版快速排序、冒泡排序

 更新時間:2014年04月09日 10:15:56   投稿:junjie  
這篇文章主要介紹了排序算法之PHP版快速排序、冒泡排序,需要的朋友可以參考下

一、快速排序
 
1.簡介
快速排序是由東尼·霍爾所發(fā)展的一種排序算法。在平均狀況下,排序 n 個項目要Ο(n log n)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況并不常見。事實上,快速排序通常明顯比其他Ο(n log n) 算法更快,因為它的內(nèi)部循環(huán)(inner loop)可以在大部分的架構上很有效率地被實現(xiàn)出來。
快速排序使用分治法(Divide and conquer)策略來把一個串行(list)分為兩個子串行(sub-lists)。
2.步驟
從數(shù)列中挑出一個元素,稱為 “基準”(pivot),
重新排序數(shù)列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數(shù)可以到任一邊)。在這個分區(qū)退出之后,該基準就處于數(shù)列的中間位置。這個稱為分區(qū)(partition)操作。
遞歸地(recursive)把小于基準值元素的子數(shù)列和大于基準值元素的子數(shù)列排序。
3.代碼實現(xiàn)

復制代碼 代碼如下:
function quickSort(array $array)
 {
     $len = count($array);
     if($len <= 1)
     {
         return $array;
     }
     $key = $array[0];
     $left = array();
     $right = array();
     for($i=1; $i<$len; ++$i)
     {
         if($array[$i] < $key)
         {
             $left[] = $array[$i];
         }
         else
         {
             $right[] = $array[$i];
         }
     }
     $left = quickSort($left);
     $right = quickSort($right);
     return array_merge($left, array($key), $right);
 }

 print '<pre>';
 print_r(quickSort(array(1,4,22,5,7,6,9)));
 print '</pre>';


4.排序效果

使用快速排序法對一列數(shù)字進行排序的過程


 
二、冒泡排序
 
1.簡介
冒泡排序(Bubble Sort)是一種簡單的排序算法。它重復地走訪過要排序的數(shù)列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數(shù)列的工作是重復地進行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個算法的名字由來是因為越小的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端。
2.步驟
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數(shù)。
針對所有的元素重復以上的步驟,除了最后一個。
持續(xù)每次對越來越少的元素重復上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。
3.代碼實現(xiàn)

復制代碼 代碼如下:
<?php
 function bubbingSort(array $array)
 {
     for($i=0, $len=count($array)-1; $i<$len; ++$i)
     {
         for($j=$len; $j>$i; --$j)
         {
             if($array[$j] < $array[$j-1])
             {
                 $temp = $array[$j];
                 $array[$j] = $array[$j-1];
                 $array[$j-1] = $temp;
             }
         }
     }
     return $array;
 }

 print '<pre>';
 print_r(bubbingSort(array(1,4,22,5,7,6,9)));
 print '</pre>';


4.排序過程

使用冒泡排序為一列數(shù)字進行排序的過程

相關文章

  • ThinkPHP實現(xiàn)附件上傳功能

    ThinkPHP實現(xiàn)附件上傳功能

    這篇文章主要為大家詳細介紹了ThinkPHP實現(xiàn)附件上傳功能,圖片,文檔,視頻等文件進行上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • laravel-admin的圖片刪除實例

    laravel-admin的圖片刪除實例

    今天小編就為大家分享一篇laravel-admin的圖片刪除實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • PHP中的類型約束介紹

    PHP中的類型約束介紹

    這篇文章主要介紹了PHP中的類型約束介紹,PHP的類方法和函數(shù)中可實現(xiàn)類型約束,但參數(shù)只能指定類、數(shù)組、接口、callable 四種類型,參數(shù)可默認為NULL,PHP并不能約束標量類型或其它類型,需要的朋友可以參考下
    2015-05-05
  • 淺談PHP正則中的捕獲組與非捕獲組

    淺談PHP正則中的捕獲組與非捕獲組

    下面小編就為大家?guī)硪黄獪\談PHP正則中的捕獲組與非捕獲組。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • PHP 傳輸會話curl函數(shù)的實例詳解

    PHP 傳輸會話curl函數(shù)的實例詳解

    這篇文章主要介紹了PHP 傳輸會話curl函數(shù)的實例詳解的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • 讓codeigniter與swfupload整合的最佳解決方案

    讓codeigniter與swfupload整合的最佳解決方案

    網(wǎng)上有很多關于ci與swfupload的帖子,不過,并不是很完整,所以,這里綜合各家優(yōu)點,經(jīng)過自己實際經(jīng)驗,做了下整理,需要的朋友可以參考下
    2014-06-06
  • PHP處理CSV表格文件的常用操作方法總結

    PHP處理CSV表格文件的常用操作方法總結

    CSV文件以純文本形式存儲表格數(shù)據(jù),所以我們通過PHP數(shù)組能夠較為容易地對CSV中的數(shù)據(jù)進行讀寫,這里我們就來看一下PHP處理CSV表格文件的常用操作方法總結:
    2016-07-07
  • PHP獲取用戶客戶端真實IP的解決方案

    PHP獲取用戶客戶端真實IP的解決方案

    獲取客戶端ip其實不是個簡單的活兒,因為存在Ip欺騙,和代理問題,所以獲取客戶端的IP的真實性會打折扣的,不能百分百準確.但是我們盡量使用比較完善的方法獲取客戶的ip,下面小編給大家分享PHP獲取用戶客戶端真實IP的方法,一起看看吧
    2016-10-10
  • PHP中如何使用session實現(xiàn)保存用戶登錄信息

    PHP中如何使用session實現(xiàn)保存用戶登錄信息

    這篇文章主要給大家介紹在php中是如何使用session實現(xiàn)保存用戶登錄信息的,涉及到php session 用戶登錄等一些知識點,使用session保存用戶登錄信息要比cookie安全很多。感興趣的朋友一起學習吧
    2015-10-10
  • php讀取和保存base64編碼的圖片內(nèi)容

    php讀取和保存base64編碼的圖片內(nèi)容

    這篇文章主要為大家詳細介紹了php讀取和保存base64編碼的圖片內(nèi)容,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04

最新評論