当前位置: 首页 > news >正文

php的插入排序,通过双层for循环

1.外层循环是从数组中选出一个arr[i]将要插入到有序数组的数
2.内层循环是遍历已经排序好的数组,
    将arr[i](也就是temp)依次与有序数组做对比,
    如果发现有序数组其中一个比准备插进来的arr[i]大,
    那么谁比这个arr[i]大,谁就出去,把位置腾出去,
    当然比arr[i]大的这个数也不能扔,就给他放在已经排号序数组中
    且相对于他的下一个索引就好了。
3.上2还有个空档,这时候把temp补上就行了
<?php
$arr = [3, 7, 6,8,1];

function insertSort($arr)
{
    for ($i = 1; $i < count($arr); $i++)
    {
        echo '外层{$i}=' . $i . "次循环" . "\n";

        $temp = $arr[$i];//待插入的数
        echo '外层待插入的数为{$temp}=' . $temp . "\n";

        for ($j = $i - 1; $j >= 0 && $temp < $arr[$j]; $j--)
        {
            echo '====>内层{$j}=' . $j . "次循环" . "\n";
            echo '要插入的$temp' . "=$temp " . "VS " . '已经排序好的$arr[$j]=' . "$arr[$j]" . "小\n";

            $arr[$j + 1] = $arr[$j];
            echo '所以要腾出一个空来给temp,这时候索引$j的值为'.$arr[$j].'要往后靠,此时$j=' . $j, "\n";
        }

        echo '外层{$i}=' . $i . '次循环结束';
        // var_dump($temp,$arr[$i]);注意此处两值如果已经经历了内层循环,那么就!==
        $arr[$j + 1] = $temp;
        echo '  此时完成$j=' . $j . '把temp的值' . "$temp" . '赋予$j+1' . "\n";

        echo "=====", "\n";

    }
    return $arr;
}

var_dump(insertSort($arr));

相关文章:

  • 我的Git忽略文件
  • SCSS(SASS、CSS)学习
  • Cenos7下nginx+mysql+php环境的搭建
  • Linux实用工具
  • 李洪强经典面试题42
  • Spring3 MVC详解
  • 2:jquery.cookie用法详细解析
  • 新浪微博客户端(21)-获取当前微博未读数并提示用户
  • Distributed Configuration Management Platform(分布式配置管理平台)
  • centos系统的时间时区和MySQL的时间时区问题
  • java架构师之路:推荐的15本书
  • 学习python cgi的一点心得体会
  • Linux用户管理 (3)
  • linux下cat命令详解
  • “达观杯”文本分类挑战赛新手入门代码
  • GraphQL学习过程应该是这样的
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • 仿天猫超市收藏抛物线动画工具库
  • 蓝海存储开关机注意事项总结
  • 理清楚Vue的结构
  • 如何编写一个可升级的智能合约
  • 入手阿里云新服务器的部署NODE
  • 一天一个设计模式之JS实现——适配器模式
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 【云吞铺子】性能抖动剖析(二)
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ionic入门之数据绑定显示-1
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net 怎么循环得到数组里的值_关于js数组
  • .net操作Excel出错解决
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ 数据结构 - C++] AVL树原理及实现
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [100天算法】-二叉树剪枝(day 48)
  • [20150321]索引空块的问题.txt
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [CCIE历程]CCIE # 20604
  • [Jquery] 实现鼠标移到某个对象,在旁边显示层。
  • [LeetCode] Max Points on a Line
  • [LeetCode] Merge Two Sorted Lists
  • [Linux] 一文理解HTTPS协议:什么是HTTPS协议、HTTPS协议如何加密数据、什么是CA证书(数字证书)...
  • [Node + Docker] 聊聊怎么把 nodeclub 构建成 Docker 镜像
  • [OIDC in Action] 3. 基于OIDC(OpenID Connect)的SSO(添加Github OAuth 2.0的支持)
  • [pluginviteimport-analysis] vite 提示jsx语法报错
  • [SCOI2005]繁忙的都市