PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序
发布:smiling 来源: PHP粉丝网 添加日期:2018-07-31 11:26:07 浏览: 评论:0
- classbevin{
- public$public='public'
- private$private='private'
- protected$protected='protected'
- //final $final = 'final'
- static$static='static'
- function__construct(){
- $this->protected='change private'
- }
- publicfunctionsetValue($a){
- self::$static=$a;
- }
- publicfunctiongetValue(){
- echo$this->private;
- }
- function__destruct(){
- echo'asdfsadf'
- }
- }
- classpaixu {
- // 基本排序
- publicfunctiont_sortArray($array) {
- if(is_array($array) &&count($array)>1) {
- for($i=0;$i<count($array);$i++) {
- for($j=($i+1);$j<count($array);$j++) {
- $temp=$array[$i];
- if($array[$j]<$array[$i]) {
- $array[$i] =$array[$j];
- $array[$j] =$temp;
- }
- }
- }
- return$array;
- }else{
- return$array;
- }
- }
- // 冒泡排序
- publicfunctionc_sortArray($array) {
- if(!is_array($array) ||count($array)<=1){return$array; }
- $status= false;
- <a href="/tags.php/foreach/" target="_blank">foreach</a>($arrayas$key=>$v) {
- if($key>0) {
- if($array[$key-1]>$array[$key]) {
- $array[$key] =$array[$key-1];
- $array[$key-1] =$v;
- $status= true;
- }
- }
- }
- if($status) {
- return$this->c_sortArray($array);
- }else{
- return$array;
- }
- }
- // 快速排序
- publicfunctionv_sortArray($array) {
- if(!is_array($array) ||count($array)<=1){return$array; }
- if(count($array)>2) {
- $m=$array[floor(count($array)/2)+1];
- }else{
- if($array[0]>$array[1]) {
- $temp=$array[0];
- $array[0] =$array[1];
- $array[1] =$temp;
- }
- return$array;
- }
- $leftarray=array();
- $rightarray=array();
- foreach($arrayas$key=>$v) {
- if($v>$m) {
- $rightarray[] =$v;
- }
- if($v<$m) {
- $leftarray[] =$v;
- }
- if($v==$m) {
- $mid[] =$v;
- }
- }
- $nleftarray=$this->v_sortArray($leftarray);
- $nrightarray=$this->v_sortArray($rightarray);
- returnarray_merge($nleftarray,$mid,$nrightarray);
- }
- // 直接插入排序
- publicfunctioni_sortArray($array) {
- if(!is_array($array) ||count($array)<=1){return$array; }
- $newarray=array($array[0]);
- $temp= 0;
- foreach($arrayas$k=>$v) {
- if($k>0) {
- if($v>=$newarray[count($newarray)-1]) {
- $newarray[] =$v;
- }else{
- foreach($newarrayas$nk=>$nv) {
- if($v<$nv) {
- $temparray=array();
- foreach($newarrayas$ck=>$cv) {
- if($ck<$nk) {
- $temparray[$ck] =$cv;
- }elseif($ck==$nk) {
- $temparray[$ck] =$v;
- $temparray[($ck+1)] =$cv;
- }else{
- $temparray[($ck+1)] =$cv;
- }
- }
- $newarray=$temparray;
- break;
- }
- }
- }
- }
- }
- return$newarray;
- }
- }
- $bevin=newpaixu;
- $array=array(5,4,5,4,4,5,5,5,5,5);
- $v=$bevin->t_sortArray($array);
- print_r($v);
- $v=$bevin->c_sortArray($array);
- print_r($v);
- $v=$bevin->v_sortArray($array);
- print_r($v);
- $v=$bevin->i_sortArray($array);
- print_r($v);
运行结果:
- Array
- (
- [0] => 4
- [1] => 4
- [2] => 4
- [3] => 5
- [4] => 5
- [5] => 5
- [6] => 5
- [7] => 5
- [8] => 5
- [9] => 5
- )
- Array
- (
- [0] => 4
- [1] => 4
- [2] => 4
- [3] => 5
- [4] => 5
- [5] => 5
- [6] => 5
- [7] => 5
- [8] => 5
- [9] => 5
- )
- Array
- (
- [0] => 4
- [1] => 4
- [2] => 4
- [3] => 5
- [4] => 5
- [5] => 5
- [6] => 5
- [7] => 5
- [8] => 5
- [9] => 5
- )
- Array
- (
- [0] => 4
- [1] => 4
- [2] => 4
- [3] => 5
- [4] => 5
- [5] => 5
- [6] => 5
- [7] => 5
- [8] => 5
- [9] => 5
- )
Tags: 小结 算法 实例
- 上一篇:PHP单例模式定义与使用实例详解
- 下一篇:PHP实现多级分类生成树的方法示例
相关文章
- ·php:树形结构的算法(2013-11-13)
- ·PHP冒泡排序算法详解(2014-07-23)
- ·php三种常用的排序算法(2014-08-02)
- ·php中单字符串匹配算法实例(2014-09-22)
- ·PHP中实现冒泡排序和快速排序算法示例(2015-04-04)
- ·最简单的php中字符串匹配算法教程(2015-04-06)
- ·PHP全排列算法实现程序代码(2015-04-08)
- ·PHP中简单实现数学组合算法(2015-04-08)
- ·php中字符串匹配KMP算法实现例子(2015-04-09)
- ·PHP中使用AES加密算法加密数据的例子(2015-04-13)
- ·PHP 冒泡/快速/选择/插入排序算法实例讲解(2015-12-24)
- ·用PHP实现URL转换短网址的算法示例(2016-07-27)
- ·php四种基础排序算法的运行时间比较(2016-08-25)
- ·PHP去重进行算法升级过程(2018-05-31)
- ·PHP排序算法之简单选择排序(Simple Selection Sort)实例分析(2018-06-06)
- ·PHP排序算法之堆排序(Heap Sort)实例详解(2018-06-06)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)