`
pengfeifei26
  • 浏览: 229564 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

php 冒泡排序

    博客分类:
  • php
 
阅读更多
简单:
$arr=array(0,8,-2) 无序 从小到大排列
外层循环
$temp= 0;
for($i=0;$i<count($arr)-1;i++){
    for($j=0;$j<count($arr)-1-$i;$j++){
           if($arr[$j]>$arr[$j+1]){
            $temp = $arr[$j];
            $arr[$j] = $arr[$j+1];
           $arr[$j+1]= $temp;
         }
    }
}

里层循环找出一个最大数

2.选择排序
每次找到最小值,依次排到前面
function selectSort(&$arr){
    for($i=0;$i<count($arr)-1;$i++){
       $minVal = $arr[$i];
//记录最小值的索引
        $minIndex = $i;
      for($j=$i+1;$j<count($arr);$j++){
      if($minVal>$arr[$j]){
         $minVal = $arr[$j];
         $minIndex = $j;
           }   
  }
//交换
$temp =$arr[$i];
$arr[i] = $arr[$minIndex];
$arr[$minIndex] = $temp;
   }
}


3.插入排序
一个有序表,一个无序表
有1一个数是有序,其他n-1个数无序 -1,-2,89,90
-2,-1 89,90
往有序数列里不停的插入一个数
 function insertSort(&$arr){
//默认下标0;这个数有序
  for($i=1;$i<count($arr);$++){
//$insertVal 是准备要插入的数
     $insertVal = $arr[$i];
//准备先和$insertIndex比较
      $insertIndex = $i-1;
//如果条件满足,说明还没找到适当的位置插入
      while($insertIndex>=0&& $insertVal<$arry[$insertIndex]){
     //同时把数后移
     $arr[$insertIndex+1] =$arr[$insertIndex]
     $insertIndex--;
       
    }
//插入找到适当位置
$arr[$insertIndex+1] = $insertVal;
  }
 }




4.快速排序
找中间数据




二分查找 必须有序
function binarySearch($arr,$findVal,$leftIndex $rightIndex){
     $middleIndex = round($rightIndex+$leftIndex)/2);
if($rightIndex<$leftIndex){
   echo  '找不到'
 return;
}
//如果大于,向后找    
if($findVal>$arr[$middleIndex]){
     binarySearch($arr,$findVal,$middleIndex+1,$rightIndex) ;
 }else{
 //小于则向前找
binarySearch($arr,$findVal,$leftIndex,$middleIndex-1) ;
 }else{
  echo '找到';
}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics