四种常见的数组排序方法(php实现)

来源:互联网 发布:自考软件哪个好 编辑:程序博客网 时间:2024/06/07 01:30

一、名称

  1. 冒泡排序
  2. 选择排序
  3. 插入排序
  4. 快速排序

二、实现

<?php//冒泡    function bubbleSort(Array $a){        $len=count($a);        for($i=1;$i<$len;$i++){            for($j=0;$j<$len-$i;$j++){                if($a[$j]>$a[$j+1]){//如果i位比i+1大,则交换                    $a[$j]=$a[$j]+$a[$j+1];                    $a[$j+1]=$a[$j]-$a[$j+1];                    $a[$j]=$a[$j]-$a[$j+1];                }            }        }        return $a;    }    //选择排序    function selectSort(Array $a){        $len=count($a);        for($i=0;$i<$len-1;$i++){            $p=$i;            for($j=$i+1;$j<$len;$j++){                if($a[$p]>$a[$j]){                    $p=$j;                }            }            if($p!=$i){//不是本身则交换                $a[$i]=$a[$i]+$a[$p];                $a[$p]=$a[$i]-$a[$p];                $a[$i]=$a[$i]-$a[$p];            }        }        return $a;    }    //插入排序    function insertSort(Array $a){        $len=count($a);        for($i=1;$i<$len;$i++){            $tmp=$a[$i];            for($j=$i-1;$j>=0;$j--){                if($tmp<$a[$j]){                    $a[$j+1]=$a[$j];                    $a[$j]=$tmp;                }else{                    break;                }            }        }        return $a;    }    //快速排序    function quickSort(Array $a){        $len=count($a);        if($len<=1){//如果元素个数少于一个,则直接返回            return $a;        }        $left_array=[];        $right_array=[];        $base_num=$a[0];//以第一个数为基准        for($i=1;$i<$len;$i++){            if($a[$i]>=$base_num){                $right_array[]=$a[$i];            }else{                $left_array[]=$a[$i];            }            $left_array=quickSort($left_array);            $right_array=quickSort($right_array);        }        return array_merge($left_array,[$base_num],$right_array);    }    $a=[7,10,5,55,44,33];//原始数组    $start=microtime(true);    print_r(quickSort($a));    $end=microtime(true);    echo memory_get_usage(true).'<br/>';//内存使用情况    echo $end-$start;//获取运行时间

结束:

有必要重新看下算法了![这里写图片描述](http://img.blog.csdn.net/20150409152519075)

参考 伯乐在线-PHP实现四种基本排序算法

0 0
原创粉丝点击