1. 氣泡排序
思路分析:在要排序的一組數中,對當前還未拍好的序列,從前往後對相鄰的兩個數一次進行比較和調整,讓較大的數往下沉,較小的數往上冒。也就是每倆個當相鄰的數比較厚發現他們的排序與排序要求相反時,就將他們互換
**實現:
<?php
function
bubblesort
($arr)}
}return
$arr;}
$arr
=array(5
,3,4
,2,1
,6,3
);$res
=bubblesort
($arr
);
2. 插入排序
思路分析 :在要排序的一組數中,假設前面的數已經是排好順序的,現在要把第n個數插入到前面有序數列中,讓這個n個數也是排好順序的。反覆迴圈,直到完全排好序
<?php
function
insertsort
($arr
)else}}
return
$arr;}
$arr
=array(5
,3,4
,2,1
,6,3
);$res
=insertsort
($arr
);
3.選擇排序
思路分析:再要排序的一組數中,選出最小的乙個數與第乙個位置的數交換,然後在剩下的數中在選個最小的與第二個位置的數交換,一直迴圈到倒數第二個數和最後乙個數比較為止。
<?php
function
selectsort()
}//已經確定最小值位置,儲存到$p中,如果最小位置與當前假設位置$i不同,則位置互換 if(
$p!$=$i)
}return
$arr;}
$arr
=array(5
,3,4
,2,1
,6,3
);$res
=selectsort
($arr
);
4.快速排序
思路分析:選擇乙個基準元素,通常選擇第乙個或者最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素。此時基準元素再起排好序後的正確位置,然後在用同樣的方法遞迴的排序劃分的兩部分。
**實現:
<?php
function
quicksort
($arr
)//選擇第乙個元素作為基準
$basenum
=$arr[0
];//遍歷出標尺之外的所有元素,按照大小關係放入兩個陣列內
$leftarr
=array()
;$rightarr
=array()
;for($i
=1;$i
<
$len;$i
++)else
}//在分別對左右陣列進行相同處理方式遞迴呼叫,最後合併陣列
$leftarr
=quicksort
($leftarr);
$rightarr
=quicksort
($rightarr);
return
array_merge
($leftarr
,array
($basenum),
$rightarr);
}$arr
=array(5
,3,4
,2,1
,6,3
);$res
=quicksort
($arr
);
php常用排序演算法
header content type text html charset utf 8 arr array 3,5,8,4,9,6,1,7,2 echo implode arr 常用排序演算法 冒泡 function bubblesort arr return arr echo 氣泡排序 echo ...
PHP常用排序演算法 氣泡排序 快速排序 插入排序
氣泡排序 兩兩交換數值,最小的值在最左邊,就如最輕的氣泡在最上邊。對整列數兩兩交換一次,最小的數在最左邊,每次都能得乙個在剩下的數中的最小 的數,冒 出來的數組成乙個有序區間,剩下的值組成一無序區間,且有序區間中每一元素值都比無序區間的小。快速排序 基準數,左右二個陣列,遞迴呼叫,合併。插入排序 排...
php 常用排序
ar array array 10 11 100 100 a array 1 2,2 3 1 array multisort ar 0 sort asc sort string ar 1 sort numeric sort desc var dump ar 本例中在排序後,第乙個陣列將變成 10 1...