代码实现:

/**
*   插入排序
*   在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第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;
}
//测试
$arr = [5,2,1,1,3,1,4];
// $arr = [5,2,0,0];
$end = insertSort($arr);
echo "<pre>";
print_r($end);

过程分析:

第1轮
Array ( [0] => 2 [1] => 5 [2] => 1 [3] => 1 [4] => 3 [5] => 1 [6] => 4 )
第2轮
Array ( [0] => 2 [1] => 1 [2] => 5 [3] => 1 [4] => 3 [5] => 1 [6] => 4 )
Array ( [0] => 1 [1] => 2 [2] => 5 [3] => 1 [4] => 3 [5] => 1 [6] => 4 )
第3轮
Array ( [0] => 1 [1] => 2 [2] => 1 [3] => 5 [4] => 3 [5] => 1 [6] => 4 )
Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 5 [4] => 3 [5] => 1 [6] => 4 )
第4轮
Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 5 [5] => 1 [6] => 4 )
第5轮
Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 1 [5] => 5 [6] => 4 )
Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 1 [4] => 3 [5] => 5 [6] => 4 )
Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 5 [6] => 4 )
第6轮
Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )

转载于:https://www.cnblogs.com/meetuj/p/10412181.html

PHP实现四种排序-插入排序相关推荐

  1. php主要算法设计,四种排序算法设计(PHP)

    标签 详细分析 /** * 四种排序算法设计(PHP) * * 1) 插入排序(Insertion Sort)的基本思想是: 每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当 ...

  2. 数据结构:四种排序的比较

    对大数据进行排序时,冒泡排序.选择排序.奇偶排序.插入排序的效率不相同 各种排序的代码: 冒泡排序: View Code 1 public void bubbleSort() 2 { 3 int ou ...

  3. 比较排序算法的时间复杂度 c语言,c语言四种排序算法时间复杂度比较(10页)-原创力文档...

    1.方案设计: 我这次实验通过随机生成30000个随机数,把随机数存到数组中,用这同一组随机数据分别进行四种排序,直接插入排序.直接选择排序.冒泡排序和快速排序.还通过了调用txt文件把运算所需时间导 ...

  4. golang实现四种排序(快速,冒泡,插入,选择)

    本文系转载 原文地址: http://www.limerence2017.com/2019/06/29/golang07/ 前面已经介绍golang基本的语法和容器了,这一篇文章用golang实现四种 ...

  5. 四种排序:选择,插入,冒泡,快速排序原理及其对应的时间、空间复杂度解析

    四种排序:选择,插入,冒泡,快速排序原理及其对应的时间空间复杂度 首先,在了解四种排序之前,让我们来了解一下什么是时间复杂度和空间复杂度. 时间复杂度:算法的时间复杂度是一个函数,它定性描述该算法的运 ...

  6. 数组的四种排序方法介绍

    最近在学习和练习一些算法方面的知识,发现在java中运用数组进行排序一般就四种方法:快速排序法.冒泡法.选择排序法.插入排序法.我们只要掌握这四种排序方法,基本上就能解决所有的排序问题.所以我接下来就 ...

  7. Hive中的四种排序方式(order by,sort by,distribute by,cluster by)使用与区别详解

    在平时的Hive数仓开发工作中经常会用到排序,而Hive中支持的排序方式有四种,这里结合具体的案例详细介绍一下他们的使用与区别: order by sort by distribute by clus ...

  8. php常用的四种排序算法

    纯当练习,高手请绕过.以一维数组为例. 1.插入排序 思想: 每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止. 示例: [初始关键字] [49 ...

  9. 四种排序方法用java实现

    用三种方法实现几个数的排序:冒泡排序,选择排序,调用Java里的库函数 1. 冒泡排序:顾名思义,就是将小的数一步一步往上冒,大的数一个个往下沉,下面是自己写的对冒泡排序的理解,字丑将就看一下吧. 2 ...

最新文章

  1. Python-基础知识-常用模块
  2. 数字图像处理实验(17):PROJECT 06-04,Color Image Segmentation
  3. 如何重开固定资产会计年度
  4. dev c++怎么调试_「正点原子NANO STM32开发板资料连载」第十八章 USMART 调试组件...
  5. 【数据结构与算法】递归
  6. boost::system::generic_category相关的测试程序
  7. 大量多风格多功能后台管理模板
  8. 基于NPOI的报表引擎——ExcelReport
  9. CTSC2017酱油记
  10. JavaScript正则表达式 1
  11. 导出PDF /home/education/font/simsun.ttc not found as file or resource.
  12. global mapper提取等高线
  13. FPGA开发板学习(1)
  14. presentation健身主题HTML,如何用英文做presentation
  15. 手机APP抓包问题总结及相关解决方案
  16. 魏文王问扁鹊的注释_魏文王问扁鹊曰阅读答案与翻译
  17. C/C++ restrict修饰符
  18. DHT网络 学习笔记
  19. 家庭理财属于计算机的什么应用领域,家庭理财的管理信息系统
  20. H3C设备配置wifi

热门文章

  1. 多层陶瓷电容器用处_【科普】片状多层陶瓷电容器的封装方法,你了解吗?
  2. 中央财经大学计算机专业排名,中央财经大学怎么样 2021年全国排名多少
  3. linux输出mac,Linux(Mac)命令ll输出后各个字段的含义
  4. hikaridatasource连接池_细数springboot中的那些连接池
  5. python c 混合编程 用c循环_混合编程:用 C 语言来扩展 Python 大法吧!
  6. linux主从服务器不能同步,Linux下redis的持久化、主从同步与哨兵详解
  7. 错误:No plugin found for prefix spring-boot in the current project and in the plugin groups
  8. 微信分享时,描述内容怎么换行
  9. nginx: [emerg] duplicate “log_format“ name “main“ in /usr/local/phpstudy/vhost/sys/nginx/sys.conf:11
  10. 公务员考试中的计算机知识点,2021年度公务员考试计算机基础知识试题.doc