Ph**P版本常用的排序算法汇总

时间:2016.04.20 发布人:vetfwk

Ph**P版本常用的排序算法汇总

已解决问题

谷歌vetfwk用户在2016.04.20提交了关于“支付宝Ph**P版本常用的排序算法汇总”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-03-02T19:35:26。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,当代劳模,所有人都应该向你学习 !

希望以下的回答,能够帮助你。

第1个回答

用户名:fdfsjf  

//
1、冒泡排序

functionbubble_sort($arr){  $n=co问答unt($arr);  for($i=0;$i<$n-1;$i++){    for($j=$i+1;;$j<$n-$i;$j++){      if($arr[$j]<$arr[$i]){ 可损诗顶换最       $temp=$arr[$i];        $arr[$i]=$arr[$j];        $arr[$j]=$tem社衣更落己p;      }    }  }}

//
2、归并排序

//merge函数将指定的两个有序数组(arr1arr2,)合并并且排序//我们可以找到第三个数组,然后依次从两个数组的开始取**哪个投革印践用成所次**小就先取哪个的,然后删除掉刚刚取过///的数据functional_me包所亲水望紧探时于rge($arrA,$arrB){$arrC=array();while(count($arrA)&&count($arrB)){//这里不断的判断哪个值小,就将小的值给到arrC,但是到最后肯定要剩下几个值,//不是剩下arrA里面的就是剩下arrB里面的而且这几个有序的值,肯定比arrC里面所有的旨大所以使用$arrC[]=$arrA['0']<$arrB['0']?array_shift($arrA):array模朝陆说北注选继本活离_shift($arrB);减顺供仅触画坏再}returnarra氧局棉裂形棉侵式书y_merge($arrC,$arrA,$arrB);}需居括然进实画//归并排序主程序f被面操头静介给标并unctional_merge_sort($arr){$len=count($arr);if($len<=1){r波挥述美eturn$ar装底般品断供谈刘效低r;//递归结束条件,到达这步的时候,数组就只剩下一个元素了,也就是分离了数组}$mid=intval($len/2);//取数组中间$left_arr=array_slice($arr,0,$mid);//拆分数组0-mid搞景裂源矿这部分给左边left_arr$right_arr=array_slice(诉属批征血围激土$arr,$mid);//拆分数组mid-末尾这部分给右边right_arr$left_arr=al_merge_sort($left_arr);//左边拆分完后开始递归合并往上走$right_arr=al_mer会边富务ge_sort($right_arr);//右边拆分完毕开始递归往介岁正火便茶耐料脱前上走$arr=al_merge($left_arr,$right_arr);//合并两个数组,继续递归return$arr;}$arr=array(12,5,4,7,8,3,4,2,6,4,9);print_r(a早州露长案最院准液照色l_merge_sort($arr));

//
3、二分查找-递归

//二分查找-递归func够药何的述妈罪担tionbin_输让保胞胶若油交女茶search($array,$low,$**,$k){if($low<=$**){$mid=intval(($low+$**)/2);}else{returnfalse;}if($array[$mid]==$k){return$mid;}elseif($k<$array[$mid]){returnbin_search($array,$low,$mid-1,$k);}else{returnbin_search($array,$mid+1,$**,$k);}}$arr=array(12,5,4,7,3,8,4,2,6,4,9);$index=bin_search($arr,0,10,12);//直接输出为空,不解echo(intval($index));

//
4、二分查找-非递归

functionbin_search($arr,$low,$**,$value){//$arr数组;$slow最小索引;$**最大索引$value查找的值  while($low<=$**){  $mid=intval(($low+$**)/2);  if($value==$arr[$mid]){      return$mid;    }elseif($value<$arr[$mid]){      $**=$mid-1;    }else{      $low=$mid+1;    }  }  returnfalse;}

//
5、快速排序

functionquick_sort($arr){$n=count($arr);if($n<=1)return$arr;$key=$arr[0];$left_arr=array();$right_arr=array();for($i=1;$i<$n;$i++){if($arr[$i]<=$key)$left_arr[]=$arr[$i];else$right_arr[]=$arr[$i];}$left_arr=quick_sort($left_arr);$right_arr=quick_sort($right_arr);returnarray_merge($left_arr,array($key),$right_arr);}

//
6、选择排序

functionselect_sort($arr){$n=count($arr);for($i=0;$i<$n;$i++){$k=$i;for($j=$i+1;$j<$n;$j++){if($arr[$j]<$arr[$k])$k=$j;}if($k!=$i){$temp=$arr[$i];$arr[$i]=$arr[$k];$arr[$k]=$temp;}}return$arr;}

//
7、插入排序

functioninsertSort($arr){$n=count($arr);for($i=1;$i<$n;$i++){$tmp=$arr[$i];$j=$i-1;while($arr[$j]>$tmp){$arr[$j+1]=$arr[$j];$arr[$j]=$tmp;$j--;if($j<0)bre**;}}return$arr;}