php面试算法题—快速算法、冒泡算法讲解

来源:互联网 发布:大数据的缺陷 编辑:程序博客网 时间:2024/05/18 03:27
1、冒泡算法<?phpfunction maopao($arr){ $len = count($arr); for($i=1; $i<$len; $i++)//最多做n-1趟排序 {  $flag = false;    //本趟排序开始前,交换标志应为假  for($j=$len-1;$j>=$i;$j--)  {    if($arr[$j]<$arr[$j-1])//交换记录   {//如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了     $x=$arr[$j];     $arr[$j]=$arr[$j-1];     $arr[$j-1]=$x;     $flag = true;//发生了交换,故将交换标志置为真   }  }  if(! $flag)//本趟排序未发生交换,提前终止算法 return $arr;   } }$shuz = array('2','4','1','8','5');$bb = maopao($shuz);print_r($bb);//$i=1  $len=5?>2、快速算法<?php// 快速排序function kuaisu($arr){    $len = count($arr);    if($len <= 1){        return $arr;    }    $key = $arr[0];    $left_arr = array();    $right_arr = array();    for($i=1; $i<$len;$i++){        if($arr[$i] <= $key){            $left_arr[] = $arr[$i];        }else{            $right_arr[] = $arr[$i];        }    }    $left_arr = kuaisu($left_arr);    $right_arr = kuaisu($right_arr);    return array_merge($left_arr, array($key), $right_arr);}$arr = array(23,98,54,2,9,62,34);print_r(kuaisu($arr));?>


0 0
原创粉丝点击