程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php的一些簡單算法程序(冒泡、快速等)

php的一些簡單算法程序(冒泡、快速等)

編輯:PHP綜合

冒泡排序:

function buttle_sort($array) {
        $len=count($array);
        if($len<2){
            return $array;
        }
        for($i=0;$i<$len;$i++){
            $flag = false;//本趟排序開始前,交換標志應為假
            for($j=$len-1;$j>$i;$j--){
                if($array[$j]<$array[$j-1]){
                    $tmp = $array[$j];
                    $array[$j] = $array[$j-1];
                    $array[$j-1] = $tmp;
                    $flag = true;//發生了交換,故將交換標志置為真
                }
            }
        }
        if(!$flag)//本趟排序未發生交換,提前終止算法
            return $array;
        
    }

選擇排序

 <?php
 //選擇排序
 function selectSort($arr)
 {
     $count = count($arr);
     if ($count < 2) {
         return $arr;
     }
     for ($i = 0; $i < $count; $i ++) {
         $min = $i;
         for($j=$i + 1;$j < $count;$j++){
             if ($arr[$min] > $arr[$j]) {
                 $min = $j; // 找到最小的那個元素的下標
             }
         }
         if ($min != $i) { // 如果下標不是$i 則互換。
             $tmp = $arr[$i];
             $arr[$i] = $arr[$min];
             $arr[$min] = $tmp;
         }
     }
     return $arr;
 }

冒泡排序其實上是和選擇排序相比,並無明顯差別。都是找到最小的,放到最左端。依次循環解決問題。差別在於冒泡排序的交換位置的次數較多,而選擇排序則是找到最小的元素的下標,然後直接和最左端的交換位置。

 

快速排序算法:

 //快速排序
 function quickSort(&$arr){
     if(count($arr)>1){
         $k=$arr[0];
         $x=array();
         $y=array();
         $_size=count($arr);
         for($i=1;$i<$_size;$i++){
             if($arr[$i]<=$k){
                 $x[]=$arr[$i];
             }elseif($arr[$i]>$k){
                 $y[]=$arr[$i];
             }
         }
         $x=quickSort($x);
         $y=quickSort($y);
         return array_merge($x,array($k),$y);
     }else{
         return$arr;
     }
 }

 二分查找

 /**二分查找:查找一個值在數組中的位置
  * @$arr:操作的數組,前提是按順序排列
  * @$val:查找的值
  * @$low:查找的起始位置,默認從數組的第一個數找起
  * @hight:查找的結束位置**/
 function binarySearch($arr, $val, $hight, $low=0){    
     while($low <= $hight){        
         $mid = ceil($low + ($hight - $low) / 2);        
         if($arr[$mid] == $val){            
             return $mid;        
         }elseif($arr[$mid] > $val){            
             $hight = $mid -1;        
         }else{            
             $low = $mid +1;        
         }    
     }    
     return -1;
 }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved