PHP簡(jiǎn)單選擇排序算法實(shí)例
簡(jiǎn)單的選擇排序算法:通過n-i次關(guān)鍵字間的比較,從n-i+1個(gè)記錄中選出關(guān)鍵字最小的記錄,并和第i(1<=i<=n)個(gè)記錄交換
<?php
class Sort{
/**
* 簡(jiǎn)單的選擇排序
*
* @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]較小的值,則將該下標(biāo)賦給$min
$min=$j;
}
}
if ($min!=$i){//若$min不等于$i,說明找到了最小值,則交換
$this->swap($arr[$i],$arr[$min]);
}
}
}
/**
* 將$a和$b兩個(gè)值進(jìn)行位置交換
*/
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);//簡(jiǎn)單的選擇排序
// var_dump($arr);
?>
簡(jiǎn)單選擇排序的特點(diǎn):交換移動(dòng)數(shù)據(jù)次數(shù)相當(dāng)少,從而節(jié)約了相應(yīng)的時(shí)間
簡(jiǎn)單選擇排序的時(shí)間復(fù)雜度分析:
無論最好最差的情況,其比較次數(shù)都是一樣多,第i趟排序需要進(jìn)行n-i次關(guān)鍵字的比較,此時(shí)需要比較n(n-1)/2次。所以最終的時(shí)間復(fù)雜度是O(n^2)
盡管與冒泡排序同為O(n^2),但選擇排序的性能還是略優(yōu)于冒泡排序的。
相關(guān)文章
學(xué)習(xí)php過程中的一些注意點(diǎn)的總結(jié)
在學(xué)習(xí)php的過程中會(huì)有一些細(xì)節(jié)是需要注意的,本文整理了一些比較實(shí)際的問題,希望對(duì)大家有所幫助2013-10-10
PHP實(shí)現(xiàn)的mysql主從數(shù)據(jù)庫狀態(tài)檢測(cè)功能示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的mysql主從數(shù)據(jù)庫狀態(tài)檢測(cè)功能,結(jié)合具體實(shí)例形式分析了php檢測(cè)多個(gè)mysql主從數(shù)據(jù)庫連接狀態(tài)的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07
php自定義函數(shù)br2nl實(shí)現(xiàn)將html中br換行符轉(zhuǎn)換為文本輸入中換行符的方法【與函數(shù)nl2br功能相反】
這篇文章主要介紹了php自定義函數(shù)br2nl實(shí)現(xiàn)將html中br換行符轉(zhuǎn)換為文本輸入中換行符的方法,具有與函數(shù)nl2br相反的功能,并附帶了相應(yīng)的JS實(shí)現(xiàn)方法,需要的朋友可以參考下2017-02-02
PHP使用curl函數(shù)發(fā)送Post請(qǐng)求的注意事項(xiàng)
這篇文章主要給大家介紹的是PHP使用curl函數(shù)發(fā)送Post請(qǐng)求的一些注意事項(xiàng),文中通過示例代碼與解釋介紹的很詳細(xì),對(duì)大家學(xué)習(xí)或則使用PHP具有一定的參考借鑒價(jià)值,有需要的朋友們可以跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。2016-11-11
php 自寫函數(shù)代碼 獲取關(guān)鍵字 去超鏈接
根據(jù)權(quán)重獲取關(guān)鍵字 去掉文章中的超鏈接簡(jiǎn)單,簡(jiǎn)潔2010-02-02
PHP動(dòng)態(tài)規(guī)劃解決0-1背包問題實(shí)例分析
這篇文章主要介紹了PHP動(dòng)態(tài)規(guī)劃解決0-1背包問題,實(shí)例分析了背包問題的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-03-03
PHP使用兩個(gè)棧實(shí)現(xiàn)隊(duì)列功能的方法
這篇文章主要介紹了PHP使用兩個(gè)棧實(shí)現(xiàn)隊(duì)列功能的方法,結(jié)合實(shí)例形式分析了php基于兩個(gè)棧實(shí)現(xiàn)隊(duì)列功能的思路與具體操作技巧,需要的朋友可以參考下2018-01-01

