美文网首页
算法篇 --- 2021-08-31

算法篇 --- 2021-08-31

作者: 一位先生_ | 来源:发表于2021-09-01 10:14 被阅读0次

冒泡排序

冒泡排序的原理:一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。

function bubble_sort($arr)  
{  
    $count = count($arr);  
    if (0 == $count) {
        return false;  
    }
    for($i = 0; $i < $count; $i++){  
        for($j = 0; $j< $count-1-$i; $j++){
            if($arr[$j] > $arr[$j+1]){
                $temp        = $arr[$j];
                $arr[$j]     = $arr[$j+1];
                $arr[$j+1]   = $temp;
           }
      }
    }  
    return $arr;  
}

快速排序

快速排序是对冒泡排序的一种改进。

实现过程是:

先从数列中取出一个数作为基准数。
分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
再对左右区间重复第二步,直到各区间只有一个数。

function quick_sort(array $list) {
    $len = count($list);
    if ($len <= 1) {
        return $list;
    }
    $pivotValue = $list[0];
    $left = array();
    $right = array();
    for ($i = 1; $i < $len; $i++) { 
        if ($list[$i] < $pivotValue) {
            $left[] = $list[$i];
        }else{
            $right[] = $list[$i];
        }
    }
    $left = quick_sort($left);
    $right = quick_sort($right);
    return array_merge($left, array($pivotValue), $right);
}

二分查找(折半查找)

实现思想:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记 录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。

function binSearch($arr, $target){  
    $height = count($arr)-1;  
    $low = 0;  
    while($low <= $height){  
        $mid = floor(($low+$height)/2);//获取中间数
        //两值相等,返回 
        if($arr[$mid] == $target){  
            return $mid; 
        //元素比目标大,查找左部 
        } elseif ($arr[$mid] < $target){
            $low = $mid + 1;  
        //元素比目标小,查找右部
        } elseif ($arr[$mid] > $target){  
            $height = $mid - 1;  
        }  
    }  
    return "查找失败";  
}

相关文章

  • 算法篇 --- 2021-08-31

    冒泡排序 冒泡排序的原理:一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。 快速排序 快速排序...

  • FFmpeg 使用MediaCodec

    FFmpeg 使用MediaCodec 环境: ffmpeg branch-3.4 @ 2021-08-31 FF...

  • 不要听太多的噪音

    日记907篇 2021-08-31 这几天,每天都只做有价值的事,感觉非常好,原来自己以前没有真正做到断舍离,太多...

  • 1109. 航班预订统计

    2021-08-31 LeetCode每日一题 链接:https://leetcode-cn.com/proble...

  • 《垃圾回收的算法与实现》下载

    本书分为“算法篇”和“实现篇”两大部分。算法篇介绍了标记-清除算法、引用计数法、复制算法、标记-压缩算法、保守式G...

  • 4-git统计时间段内的代码量

    把日期修改一下就行 git log --since=2021-08-01 --until=2021-08-31 -...

  • 数据结构与算法-目录

    数据结构与算法-目录 C语言篇 数据结构和算法-C语言篇1-绪论数据结构和算法-C语言篇2-初识算法数据结构与算法...

  • MySQL 篇 --- 2021-08-31

    MyISAM 和 InnoDB 的区别 MyISAM 查询效率更高,但是不支持事物 InnoDB 插入、更新较高,...

  • PHP 篇 --- 2021-08-31

    基础篇 Get 和 POST 的区别(1). 显示有区别get方法是将字符串拼接在地址栏后面可以看见; 而post...

  • A*算法(启发式算法)

    A*算法这是我写的第一篇有关A*算法的文章,写得比较简洁,我决定再写一篇,补充一下对A*算法的理解。 A*算法的启...

网友评论

      本文标题:算法篇 --- 2021-08-31

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