• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
jsp或php等view之中使用javascript简单处理的使用技巧发布时间:2022-07-10
下一篇:
PHP、C++的重载发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap