PHP常見(jiàn)排序

1.冒泡排序
算法重復(fù)的訪問(wèn)要排的數(shù)列,一次比較兩個(gè)元素,如果順序錯(cuò)誤就把他們糾正過(guò)來(lái),
走訪數(shù)列的工作重復(fù)的進(jìn)行,直到?jīng)]有在需要交換

function bubbleSort($arr){
  $len=count($arr);
  for($i=0;$i<$len-1;$i++){
    for($j=0;$j<len-1-$i;$j++){
      if($arr[$j]>$arr[$k+1]){
         $tmp=$arr[$k+1];
         $arr[$k+1]=$arr[$1];
         $arr[$k]=$tmp;
       }
    }
  }
  return $arr;
}

2.快速排序
從數(shù)列中挑選一個(gè)數(shù)作為基準(zhǔn)元素,通常選擇第一個(gè)或者最后一個(gè)元素
掃描數(shù)列,以基準(zhǔn)元素為比較對(duì)象,把數(shù)列分成兩個(gè)區(qū),規(guī)則是:小的移動(dòng)在基準(zhǔn)元素的前面,大的移動(dòng)在后面,相等的前后都可以。分區(qū)完成以后,基準(zhǔn)元素就處于數(shù)列中間位置
然后用同樣的方法,遞歸的排列劃分的兩部分

function quickSort($arr){
  $len=count($arr);
  if($len<1){
    return false;
  }
  //選擇第一個(gè)元素作為基準(zhǔn)元素
  $middle = $arr[0];
  //初始化小于中間的數(shù)組  
  $left=array();
  //初始化大于中間的數(shù)組
  $right=array();
  
  for($i=0; $i<count($arr);$i++){
    if( $middle < $arr[$i] ){
      //大于中間的值
      $right[]=$a[$i];
    } else{
      //小于中間的值
      $left[]=$a[$i];
    }
  }
   //遞歸排序
  $left=quickSort($left);
  $right=quickSort($right);
  //合并排序的數(shù)據(jù)
  return  array_merge($left,array($middle),$right); 
}

二分查找
二分查找算法也叫對(duì)半查找算法,二分查找的思想非常簡(jiǎn)單,有點(diǎn)類似分治思想
二分查找針對(duì)的是一個(gè)有序的數(shù)據(jù)集合,每次都通過(guò)跟中間元素對(duì)比
將帶查找的區(qū)間縮小為之前的一半,直到查找到指定元素,或者區(qū)間被縮小為0

function biarySearch($arr,$findVal){
  $start=0;
  $end=count($arr)-1;
 while($start<=$end){
  $middle=intavl(($start+$end)/2);
  if($arr[$middle]>$findVal){
    //查找的數(shù)比中間數(shù)小,所以在左邊
    //因?yàn)?middle已經(jīng)對(duì)比過(guò)了,這里需要減1
    $end =$middle-1;
  }elseif($arr[$middle]<$findVal){
    //查找的數(shù)比中間的數(shù)大,所以在右邊
    //因?yàn)?middle已經(jīng)對(duì)比過(guò)了,這一需要加1
    $start=$middle+1;
  }else{
    //找到了
    return $middle;
  }
 }
  //未找到
  return  -1;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容