好久沒有來練習的自己的演算法技能了以至於很多基本的演算法都快忘記了。
以前用c寫的演算法也不多。那麼今天開始吧!以後堅持每天晚上編寫一些簡單的演算法,堅持練習!
第一篇 冒泡排序
冒泡排序是最簡單基礎的排序,但是由於好久沒寫代碼了,一開始寫下去還是不流暢。。。罪過罪過冒泡排序原理,每次從待排序的序列裡面選出一個最大或者最小的元素放到已經排好序的序列後面。知道最後待排序的序列為無;以下是用php實現的冒泡排序,注意以下幾點:1)當帶排序的數組為無的時候直接退出,避免出錯。2) 尼瑪數組都忘記怎麼寫了,我真是該死。
functionbubblesort($array){$count = count($array); if($count == 0){ return$array; } echo$count; 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; } } } return$array; } $array = array(1,45,2,4,54,2,45,6); print_r(bubblesort($array)); ?>
第二篇 快速排序(quicksort)
原理: 快速排序是對冒泡排序的一種改進,基本思想是通過一趟排序將要排序的資料分成兩部分,其中的一部
分比另一部分所有資料都小,然後按此方法對著兩部分的資料分別進行快速排序,整個排序過程可以遞迴進行,以此
達到資料變成有序序列。
($arr){ $count = count($arr); if($count <= 1){ return $arr; } $key = $arr[0]; $left_arr = array(); $right_arr = array(); for($i = 1; $i < $count; $i++){ if($arr[$i] <= $key){ $left_arr[] = $arr[$i]; }else{ $right_arr[] = $arr[$i]; } } $left_arr = quickSort($left_arr); $right_arr = quickSort($right_arr); return array_merge($left_arr,array($key),$right_arr); } $arr = array(23,4,6,46,34,23,6234,34,12,34); print_r(quickSort($arr));
?>
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
以上就介紹了php實現排序演算法(一) 冒泡排序 快速排序,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。