2013年12月4日星期三

几种排序算法(PHP版)

冒泡排序
  1. function bubble_sort($arr)  
  2. {  
  3.     $len = count($arr);  
  4.     if($len <= 0) return false;  
  5.     for($i=0; $i<$len-1; $i++)  
  6.     {  
  7.         for($j=$i+1; $j<$len-1; $j++)  
  8.         {  
  9.             if($arr[$i] > $arr[$j])  
  10.             {  
  11.                 $t = $arr[$i];  
  12.                 $arr[$i] = $arr[$j];  
  13.                 $arr[$j] = $t;  
  14.             }  
  15.         }  
  16.     }  
  17.     return $arr;  
  18. }  
 

插入排序
  1. function insert_sort($arr)  
  2. {  
  3.     $len = count($arr);  
  4.     if($len <= 0) return false;  
  5.     for($i=1; $i<$len; $i++)  
  6.     {  
  7.         $flag = $arr[$i]; //待插入的数  
  8.         for($j=$i-1; $arr[$j]>$flag && $j>=0; $j--) //向前插入合适位置  
  9.         {  
  10.             $arr[$j+1] = $arr[$j]; //比它大的逐个后移  
  11.         }  
  12.         $arr[$j+1] = $flag;  
  13.     }  
  14.     return $arr;  
  15. }  
 

选择排序
  1. function select_sort($arr)  
  2. {  
  3.     $len = count($arr);  
  4.     if($len <= 0) return false;  
  5.     for($i=0; $i<$len; $i++)  
  6.     {  
  7.         $min = $i;  
  8.         for($j=$i+1; $j<$len; $j++) //记录剩下中最小那的  
  9.         {  
  10.             if($arr[$j]<$arr[$min]) $min = $j;  
  11.         }  
  12.         if($min != $i) //把当前数与该最小数交换  
  13.         {  
  14.             $temp = $arr[$min];  
  15.             $arr[$min] = $arr[$i];  
  16.             $arr[$i] = $temp;  
  17.         }  
  18.     }  
  19.     return $arr;  
  20. }  
 

快速排序
  1. function quick_sort($arr)  
  2. {  
  3.     $len = count($arr);  
  4.     if($len <= 1) return $arr;  
  5.     $mid = $arr[0]; //以此数为基准拆分为两个数组  
  6.     $l = $r = array();  
  7.     for($i=1; $i<$len; $i++)  
  8.     {  
  9.         if($arr[$i]<$mid) $l[] = $arr[$i];  
  10.         else $r[] = $arr[$i];  
  11.     }  
  12.     $l = quick_sort($l);  
  13.     $r = quick_sort($r);  
  14.     return array_merge($l, array($mid), $r);  
  15. }  
 

没有评论:

发表评论

上海松善实业有限公司

    上海松善实业有限公司是一家集多品牌销售于一体的电线电缆骨干企业,公司成立于2016年。 公司拥有国内各大品牌:起帆、远东、上上、江南、胜华等。     主要产品有:高低压电力电缆、橡套电缆、控制电缆、架空绝缘电缆、塑胶电缆、电子计算机电缆、通讯电缆、...