zoukankan      html  css  js  c++  java
  • 直接插入排序(Straight Insertion Sort)

    基本思想:

    直接插入排序的基本思想是 : 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。

    第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。

    直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束该次循环。

    插入排序的基本方法是:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。

    <?php
    //直接插入排序
    function swap(array &$arr,$a,$b){
      $temp = $arr[$a];
      $arr[$a] = $arr[$b];
      $arr[$b] = $temp;
    }
    function InsertSort(array &$arr){
      $count = count($arr);
      //数组中第一个元素作为一个已经存在的有序表
      for($i = 1;$i < $count;$i ++){
        $temp = $arr[$i];   //设置哨兵
        for($j = $i - 1;$j >= 0 && $arr[$j] > $temp;$j --){
          $arr[$j + 1] = $arr[$j];    //记录后移
        }
        $arr[$j + 1] = $temp;   //插入到正确的位置
      }
    }
    $arr = array(9,1,5,8,3,7,4,6,2);
    InsertSort($arr);
    var_dump($arr);
  • 相关阅读:
    jquery中子元素和后代元素的区别
    MVC4 创建控制器时,无法检索元数据
    ref和out的用法说明举例(转)
    DataView的ToTable方法,类似数据库Distinct。
    oracle 19C 静默安装(单机版)
    Supervisord进程管家
    zabbix v3.0安装部署【转】
    Linux下Hadoop2.7.3集群环境的搭建
    Redis集群搭建与简单使用【转】
    redis+keepalived实现高可用
  • 原文地址:https://www.cnblogs.com/mmmzh/p/10141011.html
Copyright © 2011-2022 走看看