/**冒泡排序思想:顾名思义就是冒泡,每次从数组中冒出一个最大数*/functionbubble_sort($array){$count=count($array);if($count<=0)返回false;for($i=0;$i<$count;$i++){for($j=$count-1;$j>$i;$j--){if($array[$j]<$array[$j-1]){$temp=$array[$j];$数组[$j]=$数组[$j-1];$array[$j-1]=$temp;}}}return$array;}/**快速排序*/functionquick_sort($array){$count=count($array);if($count<=1)return$array;$key=$array[0];$left_arr=array();$right_arr=array();for($i=1;$i<$count;$i++){if($key>$array[$i]){$left_arr[]=$数组[$i];}else{$right_arr=$array[$i];}}$left_arr=quick_sort($left_arr);$right_arr=quick_sort($right_arr);returnarray_merge($left_arr,array($key),$right_arr);}/**选择排序方法思路:每次选择一个对应的元素时间,然后放到指定位置*/functionselect_sort($arr){//实现思路,双循环完成,外层控制轮数,当前最小值。内层控制比较次数//$i当前最小值的位置,需要参与比较的元素为($i=0,$len=count($arr);$i<$len;$i++){//先假设最小值的位置$p=$i;//$j当前需要和哪些元素比较,for($j=$i+1;$j<$len;$j++after$i)){//$arr[$p]为当前已知的最小值valueif($arr[$p]>$arr[$j]){//比较,找到较小的那个,记录下最小值的位置,并在下一次比较中,//应该使用已知的最小值用于比较$p=$j;}}//当前最小值的位置已经确定并保存到$p中//如果发现最小值的位置与当前假设的位置$i不同,则可以调换位置if($p!=$i){$tmp=$arr[$p];$arr[$p]=$arr[$i];$arr[$i]=$tmp;}}//返回最终结果return$arr;}/**插入排序方法思路:将待排序的元素插入到数组的指定位置,假定排序编号*/functioninsert_sort($arr){//区分哪些部分已经排序//哪些部分没有排序//找到一个需要排序的元素//这个元素从第二个元素开始,到最后一个元素结束。排序好的元素//可以用loop来标记//i循环控制,每次需要插入的元素,一旦需要插入的元素被控制,//间接的把数组分成了2部分,并且下标小于当前的(左边那个)是一个排序序列for($i=1,$len=count($arr);$i<$len;$i++){//得到当前要比较的元素值$tmp=$arr[$i];//内循环控制比较并插入for($j=$i-1;$j>=0;$j--){//$arr[$j],要插入的元素,$arr[$j],待比较的元素if($tmp<$arr[$j]){//发现插入的元素较小,交换位置//将后一个元素与前一个元素交换$arr[$j+1]=$一个rr[$j];//设置之前的号码为当前需要兑换的号码$arr[$j]=$tmp;}else{//如果遇到不需要移动的元素//因为已经是排序好的数组,前面的不需要再比较break;}}}//将这个元素插入到排序好的序列中//返回return$arr;}
