PHP排序

  1. php冒泡排序

     核心思想:从前到后,依次比较相邻的两个数,总是把较
     大的数后移,以将最大的数移动到最后,然后以此类推,
     将数据排列好。
     function pop_sort(array $arr)
     {
         $n = count($arr);
         if($n < 2){
             return $arr;
         }
         for ($i = 1; $i < $n; $i++) {
             for ($j = 0; $j < $n - $i; $j++) {
                 if($arr[$j+1] < $arr[$j]){
                     $t = $arr[$j];
                     $arr[$j] = $arr[$j+1];
                     $arr[$j+1] = $t;
                 }
             }
         }
         return $arr;
     }
    
  2. 选择排序

     核心思想:假设第一个数最小,然后依次和后面的数比较,
     遇到更小的数,则替代假设最小的数,然后以此类推,确定
     第二、第三...第N小的数。
     function chose_sort(array $arr)
     {
         $n = count($arr);
         if($n < 2){
             return $arr;
         }
         for($i = 0;$i < $n-1;$i++){
             $min_index = $i;
             for($j = $i+1;$j < $n;$j++){
                 if($arr[$j] < $arr[$min_index]){
                     $min_index = $j;
                 }
             }
             if($i != $min_index){
                 $t = $arr[$i];
                 $arr[$i] = $arr[$min_index];
                 $arr[$min_index] = $t;
             }
         }
         return $arr;
     }
    
  3. php快速排序

     核心思想:假设数组某个数为数组的中间值,然后将比它
     小的数放在数组左边,将比它大的数放在数组右边,然后
     将分在左右的数组做相同递归处理,以得到最终结果。
     function quick_sort($arr)
     {
         $n = count($arr);
         if ($n < 2) {
             return $arr;
         }
         $base[0] = $arr[0];
         $leftArr = array();
         $rightArr = array();
         for ($i = 1; $i < $n; $i++) {
             if ($arr[$i] < $base[0]) {
                 $leftArr[] = $arr[$i];
             } else {
                 $rightArr[] = $arr[$i];
             }
         }
         $leftArr = quick_sort($leftArr);
         $rightArr = quick_sort($rightArr);
         return array_merge($leftArr, $base, $rightArr);
     }
    
@耿志环 2012-∞ 冀ICP备17033181号, powered by Gitbook修订: 2019-07-08 16:49:59

results matching ""

    No results matching ""