簡介:這是php排序演算法的詳細頁面,介紹了和php,有關的知識、技巧、經驗,和一些php源碼等。
class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=339153' scrolling='no'>
假設以下都是從小到大排序:
1、冒泡排序(穩定排序)
個人理解:冒泡排序就是兩個迴圈,大迴圈套小迴圈,從頭或者尾部開始比較連續的兩個元素的大小,如果不符合自己的排序標準(由小到大,或由大到小),則交換其值。
function bubble_sort($array){
$count=count($array);
for($i=0;$i<$count;$i++){
for($j=$count-1;$j>$i;$j--){
if($array[$j]<$array[$j-1]){//如果後面的值小於前面的元素,則交換值
$temp=$array[$j];
$array[$j]=$array[$j-1];
$array[$j-1]=$temp;
}
}
}
}
2、快速排序(又稱數組排序)(不穩定排序)
個人理解:在要排序的數組中找一個關鍵資料(標準值),通常把數組的第一個元素當成關鍵資料,然後迴圈數組,從第二個元素開始依次將元素值與關鍵資料進行比較,如果小於關鍵資料,就把該元素放在關索引值左邊,如果答應關鍵資料,就把該元素放在關鍵資料右邊,將關索引值左邊元素存成數組,右邊元素也存成數組,再分別進行以上排序,得到的數組與關鍵資料合併數組後就排序成功
function quick_sort($array){
$count=count($array);
if($count<=1) retrun $array; //如果數組只有一個元素或為空白,則直接返回數組,不用排序了
$key=$array[0]; //將數組第一個元素設定為關鍵資料
$left_arr=array();
$right_ar=array();
for($i=1;$i<$count;$i++){
if($array[$i]<=$key)
$left_arr[]=$array[$i];
else
$right_arr[]=$array[$i];
}
$left_arr=quick_sort($left_arr);
$right_arr=quick_sort($right_arr);
//返回合并後的數組
return array_merge($left_arr,array($key),$right_arr);
}
3、選擇排序(不穩定排序)
個人理解:選擇排序就是在要排序的數組中選出最小值與第一個元素交換值,然後再剩下的元素中選出最小值與第二個元素交換值,如此迴圈到倒數第二個元素和最後一個元素比較為止。
function select_sort($array){
$count=count($array);
if($count<=1) return $array;
for($i=0;$i<$count-1;$i++){
$min=$array[$i]; //假設當前元素為數最小,比較後再調整
for($j=$i+1;$j<$count;$j++){
if($array[$j]<$min){
$min=$array[$j];
$key=$j; //將此時值最小的元素的鍵名記下,
}
}
if($min!=$array[$i]){ //如果min在迴圈中改變了,就需要交換資料
$temp=$array[$i];
$array[$i]=$array[$key];
$array[$key]=$temp;
}
}
}
好了,先總結這三種排序演算法吧。。。。呵呵
愛J2EE關注Java邁克爾傑克遜視頻站JSON線上工具
http://biancheng.dnbcw.info/php/339153.html pageNo:8