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中如何判斷一個網(wǎng)頁請求是ajax請求還是普通請求
以下是對php中如何判斷一個網(wǎng)頁請求是ajax請求還是普通請求的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友可以過來參考下2013-08-08解析php中用PHPMailer來發(fā)送郵件的示例(126.com的例子)
本篇文章是對php中用PHPMailer來發(fā)送郵件的示例(126.com的例子)進行了詳細的分析介紹,需要的朋友參考下2013-06-06php數(shù)組函數(shù)序列之array_keys() - 獲取數(shù)組鍵名
array_keys() 函數(shù)返回包含數(shù)組中所有鍵名的一個新數(shù)組。如果提供了第二個參數(shù),則只返回鍵值為該值的鍵名2011-10-10php操作JSON格式數(shù)據(jù)的實現(xiàn)代碼
php操作JSON格式數(shù)據(jù)的實現(xiàn)代碼,需要的朋友可以參考下。2011-12-12PHP中file_get_contents設置header請求頭,curl傳輸選項參數(shù)詳解說明
php中遠程獲取和采集內容、實現(xiàn)PHP網(wǎng)頁版的FTP上傳下載、實現(xiàn)模擬登陸、實現(xiàn)接口數(shù)據(jù)傳輸(API)、實現(xiàn)模擬Cookie、下載文件斷點續(xù)傳等等,都會用到fopen、file_get_contents和curl這樣的函數(shù),當然要對比一下了,程序架構設計當然要無可挑剔了。2023-07-07