中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中實現快速排序的原理是什么

發布時間:2021-01-22 15:45:10 來源:億速云 閱讀:127 作者:Leah 欄目:開發技術

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為中點分割這個數據序列,分別對前面一部分和后面一部分進行類似的快速排序,從而完成全部數據序列的快速排序,最后把此數據序列變成一個有序的序列

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

石阡县| 马关县| 大新县| 龙门县| 新密市| 唐山市| 屏东县| 璧山县| 长武县| 额济纳旗| 长春市| 富源县| 巨鹿县| 久治县| 曲松县| 绥德县| 顺昌县| 镇宁| 诸暨市| 开封市| 四川省| 青神县| 上蔡县| 绥阳县| 吴忠市| 岳普湖县| 界首市| 逊克县| 繁昌县| 方正县| 兰州市| 康定县| 永仁县| 建瓯市| 河西区| 甘孜县| 翼城县| 鄄城县| 兰考县| 石屏县| 霍城县|