思路:

1、选择第一个元素作为有序数组a

2、取出下一个元素x,从后往前依次遍历有序数组a

3、如果有序数组元素大于x,则将有序数组元素后移一个位置

4、如果有序元素数组小于x,则x插入到当前元素的后面

5.重复上述2,3,4步骤

/**

* Created by PhpStorm.

* User: fql

* Date: 2020/6/17

* Time: 下午10:42

*/

namespace app\index\controller;

/**

* Class InsertSort

* 1、选择第一个元素作为有序数组a

* 2、取出下一个元素x,从后往前依次遍历有序数组a

* 3、如果有序数组元素大于x,则将有序数组元素后移一个位置

* 4、如果有序元素数组小于x,则x插入到当前元素的后面

* 5.重复上述2,3,4步骤

*/

class InsertSort extends \think\Controller

{

public function sort(){

$arr = [100,78,34,56,21,33,90,31,67,54];

$this->InsertSort($arr);

dump($arr);

}

public function InsertSort(&$array){

$len = count($array);

for($currentIndex = 1;$currentIndex < $len;$currentIndex++ ){

//将下一个元素排序到已经排序的数组里面

$this->sortCurrent($array,$currentIndex);

}

}

private function sortCurrent(&$array,$currentIndex){

$currentValue = $array[$currentIndex];

for($sortedIndex = $currentIndex - 1;$sortedIndex >= 0;$sortedIndex--) {

if($array[$sortedIndex] > $currentValue ){

$array[$sortedIndex + 1] = $array[$sortedIndex];

if($sortedIndex==0){

$array[$sortedIndex] = $currentValue;

}

}else{

$array[$sortedIndex + 1] = $currentValue;

break;

}

}

}

}

插入排序 php,直接插入排序,PHP实现相关推荐

  1. 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...

    先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...

  2. 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)...

    不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...

  3. [C语言] 插入排序之直接插入排序的特性及实现

    [C语言] 插入排序之直接插入排序的特性及实现 1.算法特性 直接插入是一种简单.稳定的插入排序方法,属于最为基础的排序方法之一. 其时间复杂度最好情况为O(n).最差与平均情况为O(n²),空间复杂 ...

  4. 排序算法(一)--插入排序法折半插入排序法

    约定: 假设数据中有n个数据元素(关键字).排列算法中,将序列中各关键字值依次存放于类型为keytype的数组元素K[1], K[2], K[3], -, K[n]中. 排序结果按照数据元素(关键字) ...

  5. 数据结构笔记(三十六)-- 插入排序与直接插入排序

    插入排序 插入排序就是将要排序的表分成有序表和无序表两个部分,在无序表中取一个元素,在有序表中找到其位置,然后将其插入到有序表中.这样的排序算法就是插入排序 一.插入排序的分类 直接插入排序 折半插入 ...

  6. java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......

    先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...

  7. java 折半插入排序_[Java代码] Java实现直接插入排序和折半插入排序算法示例

    1 排序思想: 将待排序的记录Ri插入到已经排好序的记录R1,R2,--,R(N-1)中. 对于一个随机序列而言,就是从第二个元素开始,依次将这个元素插入到它之前的元素中的相应位置.它之前的元素已经排 ...

  8. 插入排序之——直接插入排序(c/c++)

    直接插入排序 如下,以C中数组为例来展示该算法.在insertSort函数中对待排序数组从第二位数开始进行比较(均与前一位进行比较),在内循环中选定该次循环待排序数的位置并放置,直接插入是稳定的排序方 ...

  9. 简单插入排序,折半插入排序和2路插入排序 c源码

    以下三种插入排序时间复杂度均为O(n^2) 简单插入排序,简单直接.假定数组有序,插入 i, 从后往前遍历找到适合位置 j,移动 j +1 ~ i -1往后一位,插入i到j中. void insert ...

  10. 三种插入排序算法:直接插入排序、折半插入排序、希尔插入排序

    一.直接插入排序 空间复杂度:O(1) 时间复杂度:O(n^2) 稳定性:稳定 适用性:顺序表和链表 //直接插入排序 void InsertSort1(int A[],int n){int i,j, ...

最新文章

  1. mysql分区-索引
  2. 博客创办目的——————欢迎相互学习
  3. tomcat 开启远程debug
  4. POJ3984 迷宫问题【BFS】
  5. 蓝桥杯 出现次数最多的整数
  6. 浅谈tomcat的配置及数据库连接池的配置
  7. CentOS7虚拟机优化
  8. category和extension的区别
  9. 好用的局域网共享工具有哪些?win10系统如何设置?
  10. 钢铁雄心II(HOI2)作弊码合辑
  11. 解决google浏览器自动播放问题,亲测可用!!
  12. Excel如何快速生成二维码图片?
  13. SSL简介及其压力测试THC-SSL-DOS工具介绍
  14. 方波、三角波、正弦波信号发生器
  15. 综述!推荐系统中的自监督学习
  16. 软件测试用例设计时的颗粒度
  17. caniuse-lite is outdated. Please run next command `npm update`
  18. LEP(Linux Easy Profiling)2017年度颁奖典礼在西邮隆重举行
  19. VIN码识别技术加速汽车后市场服务速度
  20. 【Postman】Postman的请求方式

热门文章

  1. 一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字...
  2. java 跨域上传_java使用webuploader实现跨域上传详解
  3. 易语言服务器不在一个网段,设置二级路由器保持局域网在同一个网段
  4. java文本编辑器 运行_能编译运行java的简单文本编辑器
  5. jvm 参数_6个重要的JVM性能参数
  6. kuka程序备份_那智机器人系统备份步骤
  7. tf keras Dense源码解析
  8. python获取输入框内容长度_python3 tkinter 获取输入字符串长度
  9. 远程开发 代码提示_VS Code 远程开发和代码评审实践
  10. linux签名服务器,linux – 如何在远程服务器上使用gpg签名密钥?