******插入排序(一維數組)
1,從第一個元素開始,該元素可以認為已經被排序
2,取出下一個元素,在已經排序的元素序列中從後向前掃描
3,如果該元素(已排序)大於新元素,將該元素移到下一位置
4,重複步驟3,直到找到已排序的元素小於或等於新元素的位置
5,將新元素插入到該位置中
6,重複步驟2
*/
function insert_sort($arr)
{
($i=1; $i
{
$tmp = $arr[$i];
$tmp = $arr[$i];
$ j] > $tmp && $j>=0)
{
$arr }
$arr[$j+1 ] = $tmp;
}
return $arr;
}
/*
******冒泡(一維數組)
/*
******冒泡(一維數組)
1,比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
2,對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數字。
3,針對所有的元素重複以上的步驟,除了最後一個。
4,持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
*/
function bubble_sort($arr)
{
$len = count($arr);
for ($j=$len-1; $j>$i; $j--)
{
$tmp = $arr[$j-1];
$arr[$j-1] = $arr[$j];
}
}
}
return $arr;
}
/*
******選擇排序(一維數組)
1,首先在未排序序列中找到最小元素,存放到排序序列的起始位置,
2,然後再從剩餘未排序元素中繼續尋找最小元素,放到排序序列末尾。
3,以此類推,直到所有元素均排序完畢。
*/
function select_sort($arr){
$count = count($arr);
for($i=0; $i
for($j=$i+1; $j
{
(D
{
$k = $j;
($k != $i)
{
$tmp = $arr[$i] arr[$k];
$arr[$k] = $tmp;
/*
******快速排序(一維數組)
1,先隨機取一個中間值
2,把比中間值小的放到左側,比中間值大的放到右側,
3,然後再分別對左側和右側資料遞歸呼叫1,2步,合併左側、中間值、右側資料。
*/
function quick_sort($arr)
{
if (count($arr)
{
return $arr $left_arr = array();
$ right_arr = array();
for ($i=1; $i
{
$ arr [$ i];
其他$ right_arr [] = $ arr [$ i];
}
$ left_arr = quick_sort($ left_arr); ($left_arr, $key, $right_arr);
}
$a = array(123,321,432,341345,45234,53,493);
echo "
print_r(bubble_sort($a));
print_r(insert_sort($a));
print_r(quick_sort($a));
echo "r(quick_sort($a));
echo "";