PHP四大基本排序算法

2023-05-16

冒泡排序

思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

$arr=array(1,43,54,62,21,66,32,78,36,76,39);   
function bubbleSort($arr) 
{   
  $len=count($arr); 
  //该层循环控制 需要冒泡的轮数 
  for($i=1;$i<$len;$i++) 
  { //该层循环用来控制每轮 冒出一个数 需要比较的次数 
    for($k=0;$k<$len-$i;$k++) 
    { 
       if($arr[$k]>$arr[$k+1]) 
        { 
            $tmp=$arr[$k+1]; 
            $arr[$k+1]=$arr[$k]; 
            $arr[$k]=$tmp; 
        } 
    } 
  } 
  return $arr; 
}

选择排序

function selectSort($arr) { 
//双重循环完成,外层控制轮数,内层控制比较次数 
 $len=count($arr); 
    for($i=0; $i<$len-1; $i++) { 
        //先假设最小的值的位置 
        $p = $i; 

        for($j=$i+1; $j<$len; $j++) { 
            //$arr[$p] 是当前已知的最小值 
            if($arr[$p] > $arr[$j]) { 
            //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。 
                $p = $j; 
            } 
        } 
        //已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。 
        if($p != $i) { 
            $tmp = $arr[$p]; 
            $arr[$p] = $arr[$i]; 
            $arr[$i] = $tmp; 
        } 
    } 
    //返回最终结果 
    return $arr; 
}

插入排序

思路分析:在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

function insertSort($arr) { 
    $len=count($arr);   
    for($i=1, $i<$len; $i++) { 
        $tmp = $arr[$i]; 
        //内层循环控制,比较并插入 
        for($j=$i-1;$j>=0;$j--) { 
            if($tmp < $arr[$j]) { 
                //发现插入的元素要小,交换位置,将后边的元素与前面的元素互换 
                $arr[$j+1] = $arr[$j]; 
                $arr[$j] = $tmp; 
            } else { 
                //如果碰到不需要移动的元素,由于是已经排序好是数组,则前面的就不需要再次比较了。 
                break; 
            } 
        } 
    } 
    return $arr; 
}

快速排序

思路分析:选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

function quick_Sort($arr) { 
    //先判断是否需要继续进行 
    $length = count($arr); 
    if($length <= 1) { 
        return $arr; 
    } 
    //选择第一个元素作为基准 
    $base_num = $arr[0]; 
    //遍历除了标尺外的所有元素,按照大小关系放入两个数组内 
    //初始化两个数组 
    $left_array = array();  //小于基准的 
    $right_array = array();  //大于基准的 
    for($i=1; $i<$length; $i++) { 
        if($base_num > $arr[$i]) { 
            //放入左边数组 
            $left_array[] = $arr[$i]; 
        } else { 
            //放入右边 
            $right_array[] = $arr[$i]; 
        } 
    } 
    //再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数 
    $left_array = quick_sort($left_array); 
    $right_array = quick_sort($right_array); 
    //合并 
    return array_merge($left_array, array($base_num), $right_array); 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP四大基本排序算法 的相关文章

随机推荐

  • PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择的问题

    从PHP5 2 10版本开始 xff08 现在有PHP5 2 10和5 3两个版本 xff09 xff0c 有None Thread Safe与Thread Safe两种版本的可供选择 xff0c 这两种版本有何不同 xff0c 作为使用者
  • apache下载安装配置

    最近从apache官网上下载了apache最新版本的压缩包httpd 2 4 18 x64 vc11 r3 zip xff0c 解压以后用cmd命令安装了好长时间都没有安装上 xff0c 在网上找各种解决方法 xff0c 都不靠谱 xff0
  • ubuntun无法安装 libsdl2-dev

    sudo apt get install libsdl2 dev Reading package lists Done Building dependency tree Reading state information Done Some
  • PHPCrawler抓取酷狗精选集歌单

    一 PHPCrawler的介绍与安装 先了解一下什么是抓取 xff1f 抓取就是网络爬虫 xff0c 也就是人们常说的网络蜘蛛 xff08 spider xff09 是搜索引擎的一个重要组成部分 xff0c 按照一定的逻辑和算法抓取和下载互
  • 跨站脚本攻击XSS

    跨站脚本攻击 Cross Site Script为了区别于CSS简称为XSS 指的是恶意攻击者往Web页面里插入恶意html代码 xff0c 当用户浏览该页之时 xff0c 嵌入其中Web里面的html代码会被执行 xff0c 从而达到恶意
  • RedHat系统下安装yum

    一 前言 因为RedHat系统下的软件更新是RedHat公司的一项服务 xff0c 必须用钱买的rhel系统 xff0c 并且注册了RedHat的用户才能使用yum xff0c 要想免费使用yum xff0c 必须卸载原来的yum xff0
  • js实现图片放大镜效果

    一 HTML文件 lt DOCTYPE html PUBLIC 34 W3C DTD XHTML 1 0 Transitional EN 34 34 http www w3 org TR xhtml1 DTD xhtml1 transiti
  • PHP获取文件的修改时间、访问时间和inode 修改时间

    filemtime string filename 返回文件上次被修改的时间 xff0c 出错时返回 FALSE 时间以 Unix 时间戳的方式返回 xff0c 可用于 date 例如 xff1a a 61 filemtime 34 log
  • PHP设计模式之单例模式

    最近开始学习设计模式 xff0c 由于一开始没有系统的学习 xff0c 导致学的知识七零八落的 xff0c 得好好整理一下了 单例模式 xff08 职责模式 xff09 xff1a 简单的说 xff0c 一个对象 xff08 在学习设计模式
  • 创业资金来源

    创业资金的获得一般有以下几个途径 xff1a 一 自有资金 这个主要是自身的存款 xff0c 一般工作几年的人或多或少都有点存款 xff0c 这一部分的钱是自己创业的基本基金 二 股权融资 股权融资 xff0c 是指创业者或中小企业让出企业
  • Cannot modify header information解决办法

    如果在执行php程序时看到这条警告 Warning Cannot modify header information headers already sent by 可以尝试以下几种解决方法 Use exit statement 用exit
  • 中国距离VR市场成熟还要多久?

    VR xff08 Virtual Reality的缩写 xff0c 中文翻译 虚拟现实 xff09 概念早在80年代初就被提出来的 xff0c 其具体是指借助计算机及最新传感器技术创造的一种崭新的人机交互手段 中国VR产业仍在摸索阶段 亟缺
  • URL重写规则

    今天给大家详细讲解一下RewriteCond指令与RewriteRule 指令的格式 Rewirte主要的功能就是实现URL的跳转和隐藏真实地址 xff0c 基于Perl语言的正则表达式规范 帮助我们实现拟静态 xff0c 拟目录 xff0
  • 二值信号量与互斥锁区别

    互斥锁和二值信号量在使用上非常相似 xff0c 但是互斥锁解决了优先级翻转的问题 以军长 师长 团长为案例 xff0c 讲解mutex与signal区别 xff0c 以下是时序图 参考 xff1a https www cnblogs com
  • redisson-spring-boot-starter

    redisson spring boot starter spring boot 配置 spring redis redisson config classpath redisson beta yml 或者 spring redis red
  • URL中"#" "?" "&"号的作用

    10年9月 xff0c twitter改版 一个显著变化 xff0c 就是URL加入了 符号 比如 xff0c 改版前的用户主页网址为http twitter com username 改版后 xff0c 就变成了http twitter
  • STAR法则的简历应用

    STAR法则 即为Situation Task Action Result的缩写 xff0c 具体含义是 Situation 事情是在什么情况下发生 Task 你是如何明确你的任务的 Action 针对这样的情况分析 xff0c 你采用了什
  • BI商业智能

    关键字 xff1a 商务智能 xff0c 数据仓库 xff0c ETL BI xff08 Business Intelligence即商务智能 xff09 xff0c 百度百科用的解释是 xff0c 它是一套完整的解决方案 xff0c 用来
  • 遗传算法 一个模拟自然进化过程的启发式搜索算法

    关键字 xff1a 遗传算法 遗传算法 xff08 Genetic Algorithm xff09 是一种模拟自然界 自然选择 和 自然遗传 的启发式搜索算法 xff0c 通过模拟自然进化过程搜索最优解的方法 直到1989年 xff0c 实
  • PHP四大基本排序算法

    冒泡排序 思路分析 xff1a 在要排序的一组数中 xff0c 对当前还未排好的序列 xff0c 从前往后对相邻的两个数依次进行比较和调整 xff0c 让较大的数往下沉 xff0c 较小的往上冒 即 xff0c 每当两相邻的数比较后发现它们