当前位置: 首页 > 文章 > PHP插入排序算法

PHP插入排序算法

[ PHP ] 2019-12-28 22:27:33 杨歆 416
<?php

/**
 * 思路分析
 * 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。
 * 第一趟比较前两个数,然后把第二个数按大小插入到有序表中;
 * 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;
 * 依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。
 * 直接插入排序是由两层嵌套循环组成的。
 * 外层循环标识并决定待比较的数值。
 * 内层循环为待比较数值确定其最终位置。
 * 直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。
 * 当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束该次循环。
 * 插入排序的基本方法是每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。
 */

$array = [1, 3, 34, 2, 32, 2, 78, 43, 53, 35, 10, 70, 89, 102, 60];

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

var_dump(insertSort($array));
支付宝支付
打赏
微信支付

联系我吧

有些人是会淡出你的生活的,有些人刻意不再联系,是因为你知道ta不需要你,或者从一开始就不是同一个初衷在一起度过,不主动联系很久也不见一次面,所有的感情也罢,都会败给时间和距离。因为时间是最无情,给你后悔的时刻却不会给你改过重来的机会。

位置

成都市 四川省 中国

联系电话

028-6406-0000

邮箱

y139w@163.com

企鹅

27572048

网址

https://www.weania.com