首頁 php教程 PHP开发 PHP快速排序quicksort實例詳解

PHP快速排序quicksort實例詳解

Dec 21, 2016 pm 01:45 PM

本文實例講述了PHP快速排序quicksort。分享給大家供大家參考,具體如下:

quicksort

在快速排序演算法中,使用了分治策略。首先把序列分成兩個子序列,遞歸地將子序列排序,直到整個序列排序結束。 (即一分為二的思想)

步驟如下:

在序列中選擇一個關鍵元素做為軸;

對序列重新排序,將比軸小的元素移到軸的前邊,比軸大的元素移動到軸的後面。在進行劃分之後,軸便在它最終的位置上;

遞歸地對兩個子序列進行重新排序:含有較小元素的子序列和含有較大元素的子序列。

例如序列$arr:

5 3 0 11 44​​ 7 23 2 將第一個元素$arr[0] = 5 作為軸設定標誌位low … top代表首尾
2 3 0 11 44​​ 7 23 2 從相反方向(右)開始比較:22 3 0 11 44​​ 7 23 11 從相反方向(左)開始比較直到:5重複以上步驟直到low == top 把該位置替換為軸元素即5
2 3 0 5 44 7 23 11
這樣就可分為兩部分2 3 0 與44 23 11
這樣就可以得出遞歸繼續開始步驟

演算法實作:

class quick_sort{
    function quicksort(&$arr,$low,$top){
      if($low < $top){
        $pivotpos = $this->partition($arr,$low,$top);
        $this->quicksort($arr,$low,$pivotpos-1);
        $this->quicksort($arr,$pivotpos+1,$top);
      }
    }
    function partition(&$arr, $low ,$top){
      if($low == $top){
        return;
      }
  //   设置初始数值
      $com = $arr[$low];
      while($low!=$top){
  //      将比初始数值小的替换到左边
        while($top&&$top!=$low){
          if($com > $arr[$top]){
          $arr[$low++] = $arr[$top];
          break;
          }else{
            $top--;
          }
        }
  //      将比初始数值大的替换到右边
        while($low&&$low!=$top){
          if($com < $arr[$low]){
            $arr[$top--] = $arr[$low];
            break;
          }else{
            $low++;
          }
        }
      }
      $arr[$low] = $com;
      return $low;
    }
}
登入後複製

   

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

更多PHP快速排序quicksort實例詳解相關文章請追蹤PHP中文網!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24