• 快速、冒泡排序算法(PHP版)


    1.冒泡排序算法改进:

    方法一:

     1 function bubbleSort($arr){//$arr(1...n)是待排序的文件,采用自下向上扫描,对$arr做冒泡排序
     2     $bFlag = true; //交换标志
     3     for($i=0; $i<count($arr); $i++){ //最多做n-1趟排序
     4         $bFlag = false; //本趟排序开始前,交换标志应为假
     5         for($j = count($arr)-2; $j >= $i; $j--){ //对当前无序区$arr[i..n]自下向上扫描
     6             if( $arr[$j+1] < $arr[$j] ){//交换记录
     7                 $temp = $arr[$j+1]; //$temp不是哨兵,仅做暂存单元
     8                 $arr[$j+1] = $arr[$j];
     9                 $arr[$j] = $temp;
    10                 $bFlag = true; //发生了交换,故将交换标志置为真
    11             }
    12         }
    13         if(!$bFlag){ //本趟排序未发生交换,提前终止算法
    14              break;
    15         }
    16     } //endfor(外循环)
    17     print_r($arr);
    18 } //BubbleSort

    方法二:

     1 function bubbleSort($arr){
     2     $bSort = false;
     3     for ($i=0; $i<count($arr) && !$bSort; $i++) {  
     4         $bSort = true;
     5         for ($j = 0; $j<count($arr) - $i - 1; $j++) {  
     6             if ($arr[$j] > $arr[$j+1]) {  
     7                 $bSort = false;
     8                  // 不使用第三个变量  
     9                 $arr[$j] = $arr[$j] + $arr[$j+1];  
    10                 $arr[$j+1] = $arr[$j] - $arr[$j+1];  
    11                 $arr[$j] = $arr[$j] - $arr[$j+1];  
    12             }  
    13         }  
    14     }
    15 }

     2.快速排序算法:

     1 function quick_sort($array) {
     2     if (count( $array ) <= 1) return $array;
     3     $key = $array [0];
     4     $left_arr = array ();
     5     $right_arr = array ();
     6     
     7     for($i = 1; $i < count( $array ); $i ++) {
     8         if ($array [$i] <= $key)
     9             $left_arr [] = $array [$i];
    10         else
    11             $right_arr [] = $array [$i];
    12     }
    13     $left_arr = quick_sort ( $left_arr );
    14     $right_arr = quick_sort ( $right_arr );
    15     return array_merge ( $left_arr, array ($key ), $right_arr );
    16 }
  • 相关阅读:
    no space left on device
    功能测试用例
    数据库命令
    移动APP测试用例设计实践经验(转载)
    15个常用sql命令
    将Windows文件夹挂载到Linux上
    英语学习方法
    三种特质 做领导
    扬州之行 第一天
    list、dict、str虽然是Iterable,却不是Iterator
  • 原文地址:https://www.cnblogs.com/h07061108/p/Bubble_Sort.html
Copyright © 2020-2023  润新知