php快速排序原理與實現方法分析_php技巧

來源:互聯網
上載者:User

本文執行個體講述了php快速排序方法。分享給大家供大家參考,具體如下:

<?php$n = array('13','14','55','10','54','2','79','106','89','90','22','60','111','77777','-110','-10','123');function partition($n,$left,$right){  global $n;  $pivot = $n[$left];  $lo=$left;  $hi=$right+1;  while($lo+1!=$hi) {    if($n[$lo+1]<$pivot)      $lo++;    else if($n[$hi-1]>$pivot)      $hi--;    else{      $t=$n[$lo+1];      $n[$lo+1]=$n[$hi-1];      $n[$hi-1]=$t;      $lo++;      $hi--;    }  }  $n[$left]=$n[$lo];  $n[$lo]=$pivot;  return $lo;}function quicksort($n,$left,$right){  global $n;  $dp = 0;  if ($left<$right) {     $dp=partition($n,$left,$right);     quicksort($n,$left,$dp-1);     quicksort($n,$dp+1,$right);  }}quicksort($n,0,sizeof($n)-1);print_r($n);?>

快速排序是對冒泡排序的一種改進。它的基本思想是:通過一躺排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一不部分的所有資料都要小,然後再按次方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。

假設要排序的數組是A[1]……A[N],首先任意選取一個資料(通常選用第一個資料)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一躺快速排序。一躺快速排序的演算法是:

1)、設定兩個變數I、J,排序開始的時候I:=1,J:=N;
2)、以第一個數組元素作為關鍵資料,賦值給X,即X:=A[1];
3)、從J開始向前搜尋,即由後開始向前搜尋(J:=J-1),找到第一個小於X的值,兩者交換;
4)、從I開始向後搜尋,即由前開始向後搜尋(I:=I+1),找到第一個大於X的值,兩者交換;
5)、重複第3、4步,直到I=J;

快速排序就是遞迴調用此過程——在以49為中點分割這個資料序列,分別對前面一部分和後面一部分進行類似的快速排序,從而完成全部資料序列的快速排序,最後把此資料序列變成一個有序的序列

補充:小編在這裡推薦一款本站的php格式化美化的排版工具協助大家在以後的PHP程式設計中進行代碼排版:

php代碼線上格式化美化工具:

http://tools.jb51.net/code/phpformat

另外,由於php屬於C語言風格,因此下面這款工具同樣可以實現php代碼的格式化:

C語言風格/HTML/CSS/json代碼格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json

更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP數組(Array)操作技巧大全》、《php排序演算法總結》、《PHP常用遍曆演算法與技巧總結》、《PHP資料結構與演算法教程》、《php程式設計演算法總結》、《PHP數學運算技巧總結》、《phpRegex用法總結》、《PHP運算與運算子用法總結》、《php字串(string)用法總結》及《php常見資料庫操作技巧匯總》

希望本文所述對大家PHP程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.