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

2022-10-06 09:24:08 字數 1052 閱讀 3105

<?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)

} $n[$left]=$n[$lo];

$n[$lo]=$pivot;

return $lo;

}functi程式設計客棧on quicksort($n,$left,$right)

{ global $n;

$dp = 0;

if ($left

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

假設要排序的陣列是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****格式化美化工具:

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

c語言風格/html/css/json**格式化美化工具:

php堆排序實現原理與應用方法

這裡以php作為描述語言較詳細講解堆排序原理,因保證程式可讀性,故不做優化,php程式中關於堆的一些概念如下 假設n為當前陣列的key則,n的父節點為 n 1 或者 n 2 整除 n的左子節點l n 1 或 l n 2,n的右子節點r n 1 1 或 r l 1 arr array 1,8,7,2,...

php實現快速排序

先獲取第乙個值為關鍵字,讓i指向第乙個,j指向最後乙個,先從最後乙個找比key小的,j指向它,將它放在i指向的地方,然後i再向前走,直到找到比key大的,放在j指向的地方,就這樣迴圈,直到i j的時候,關閉迴圈。arr array 1,2,3,5,2,3,9,8,3,2,7,4,9,8,0,4,58...

PHP實現快速排序

快速排序 在無序的陣列 data中,選擇任意乙個值作為對比值,定義i為頭部檢索索引,j為尾部檢索索引,演算法步驟 1 初始化對比值 value data 0 i 1,j count data 1 2 首先從尾部開始檢索,判斷 data j 是否小於 value,若不小於則 j 繼續檢索,直到找到比 ...