php算法

作者: yuanlu954 | 来源:发表于2019-02-24 13:57 被阅读0次

1.直接插入算法

原理: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。

//方法一
/**
* @param $arr 需排序的数组
*/
function insert_sort($arr)
{
    $count = count($arr);
    for($i =0; $i<$count; $i++){ 
        for($j=1; $j<($count-$i); $j++){
            if($arr[$j-1] > $arr[$j]){
                 $temp = $arr[$j-1];
                 $arr[$j-1] = $arr[$j];
                  $arr[$j] = $temp;
            }
        }
    }
 return $arr;
}

//方法二
    function insert_sort($arr){
        for ($i = 0; $i < count($arr); $i++){
            $j = 1;
            while($j < count($arr)){
                if( $arr[$j-1]> $arr[$j]){
                 $temp = $arr[$j-1];
                 $arr[$j-1] = $arr[$j];
                 $arr[$j] = $temp;
                }
                $j++;
            }
        }
        return $arr;
    }

2.希尔排序算法

原理: 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

    23 , 56 , 10 , 5 , 98 , 21 , 4 , 9 , 95 , 15 
    | -----------------------|
          | -------------------- |
               | ------------------- |
                   | ------------------- |
                        | ------------------- |
    21 , 4 , 9 , 5 , 15 , 23 , 56 , 10 , 95 , 98
    | -----------|--------------|-------------|  
         | -----------|------------| 
             | -----------|--------------| 
    5 , 4 , 9 , 21 , 10 , 23 , 56 , 15 , 95 , 98

//相当于是直接插入算法    
function shell_sort($arr) {
    if(!is_array($arr)) return;
    $n = count($arr);
    for($times=floor($n/2);$times>0;$times=floor($times/2)){
        
        for($i = $times;$i<$n;$i++){
          for($j = $times;$j<=($n-$i) && $j>=0;$j+=$times){
            if($arr[$j-$times]>$arr[$j]){
                $temp = $arr[$j-$times];
                $arr[$j-$times] = $arr[$j];
                $arr[$j] =$temp ;
            }
        }  
        }
    }
    return $arr;
}

3.直接选择排序算法

原理:

timg.jpg
    function select_sort($arr){
        for($i = 0; $i < count($arr); $i++){
            $key = $arr[$i];
            $n = $i;
            for($j = $i+1; $j < count($arr); $j++){
                if($key  > $arr[$j]){
                    $key  = $arr[$j];
                    $n = $j;
                }
            }
            $arr[$n] = $arr[$i];
            $arr[$i] = $key;
        }
        return $arr;
    }

4.堆排序算法

原理:

5.冒泡排序算法

原理:

        //冒泡排序
        function mopao_sort($arr){
           $n= count($arr);
           for($i=0;$i<$n;$i++){
               for($j=0;$j<$n-1;$j++){
                if($arr[$j]>$arr[$j+1])   {
                     $c = $j;
                    $temp = $arr[$j+1];
                    $arr[$j+1] = $arr[$c];
                    $arr[$c] = $temp;
                }else{
                     $c = $j+1;
                }
            } 
           }
           return $arr; 
        }

相关文章

  • PHP常用数组排序算法

    title: PHP常用数组排序算法tags: [PHP,数组,排序,算法] 这几天写到的代码中,用到了许多对数组...

  • 2018-08-02

    php实现组合枚举算法 源码

  • PHP经典算法题

    PHP学习之路---算法题 1.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象...

  • 算法系列教程(PHP演示)

    算法系列教程-四大排序算法(PHP演示) 冒泡 冒泡排序原理...

  • PHP算法

    约瑟夫问题 故事 39个犹太人与Josephus以及他的朋友躲到一个洞里,决定宁愿死也不要被敌人抓到。于是决定了自...

  • PHP算法

    PHP算法 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组二...

  • php算法

    冒泡排序 快速排序 二分查找

  • PHP算法

    1. 冒泡排序 2. 约瑟夫环(猴王问题)

  • php算法

    1.直接插入算法 原理: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第...

  • 常用的排序算法

    常用的排序算法(PHP实现)_慕课手记

网友评论

      本文标题:php算法

      本文链接:https://www.haomeiwen.com/subject/mnovyqtx.html