PHP簡單選擇排序算法實例
簡單的選擇排序算法:通過n-i次關鍵字間的比較,從n-i+1個記錄中選出關鍵字最小的記錄,并和第i(1<=i<=n)個記錄交換
<?php
class Sort{
/**
* 簡單的選擇排序
*
* @param unknown_type $arr
*/
public function selectSort(&$arr) {
$len=count($arr);
for ($i=0;$i<$len;$i++) {
$min=$i;
for ($j=$i+1;$j<=$len-1;$j++) {
if ($arr[$min]>$arr[$j]) {//如果找到比$arr[$min]較小的值,則將該下標賦給$min
$min=$j;
}
}
if ($min!=$i){//若$min不等于$i,說明找到了最小值,則交換
$this->swap($arr[$i],$arr[$min]);
}
}
}
/**
* 將$a和$b兩個值進行位置交換
*/
public function swap(&$a,&$b) {
$temp=$a;
$a=$b;
$b=$temp;
}
}
$arr=array(4,6,1,2,9,8,7,3,5);
$test=new Sort();
$test->selectSort($arr);//簡單的選擇排序
// var_dump($arr);
?>
簡單選擇排序的特點:交換移動數(shù)據(jù)次數(shù)相當少,從而節(jié)約了相應的時間
簡單選擇排序的時間復雜度分析:
無論最好最差的情況,其比較次數(shù)都是一樣多,第i趟排序需要進行n-i次關鍵字的比較,此時需要比較n(n-1)/2次。所以最終的時間復雜度是O(n^2)
盡管與冒泡排序同為O(n^2),但選擇排序的性能還是略優(yōu)于冒泡排序的。
相關文章
PHP實現(xiàn)的mysql主從數(shù)據(jù)庫狀態(tài)檢測功能示例
這篇文章主要介紹了PHP實現(xiàn)的mysql主從數(shù)據(jù)庫狀態(tài)檢測功能,結(jié)合具體實例形式分析了php檢測多個mysql主從數(shù)據(jù)庫連接狀態(tài)的相關實現(xiàn)技巧,需要的朋友可以參考下2017-07-07
php自定義函數(shù)br2nl實現(xiàn)將html中br換行符轉(zhuǎn)換為文本輸入中換行符的方法【與函數(shù)nl2br功能相反】
這篇文章主要介紹了php自定義函數(shù)br2nl實現(xiàn)將html中br換行符轉(zhuǎn)換為文本輸入中換行符的方法,具有與函數(shù)nl2br相反的功能,并附帶了相應的JS實現(xiàn)方法,需要的朋友可以參考下2017-02-02
PHP使用curl函數(shù)發(fā)送Post請求的注意事項
這篇文章主要給大家介紹的是PHP使用curl函數(shù)發(fā)送Post請求的一些注意事項,文中通過示例代碼與解釋介紹的很詳細,對大家學習或則使用PHP具有一定的參考借鑒價值,有需要的朋友們可以跟著小編一起來學習學習吧。2016-11-11
PHP動態(tài)規(guī)劃解決0-1背包問題實例分析
這篇文章主要介紹了PHP動態(tài)規(guī)劃解決0-1背包問題,實例分析了背包問題的原理與實現(xiàn)技巧,需要的朋友可以參考下2015-03-03

