插入排序

插入排序的逻辑:

假设Array A为已经排序好的数组,此时需要从Array B中抽取最靠前的元素插入到Array A中,且需要按顺序插入。

变形:

如果只有Array A,而不存在Array B。现在对Array A自己进行插入排序。可以默认认为Array A中的前半段为已排序好的数组,后半段为未排序数组,而元素K为目前正要进行排序的元素。此时前半段可以表示为A[0-(k-1)],后半段为A[(k+1)-(n-1)]n为数组长度

代码实现:

<?php
$a = array(5,2,4,6,1,3);
$b = array(31,41,59,26,41,48);

function insertionSortAsc($a = array())
{
    $length = count($a);

    for ($j = 1; $j < $length; $j++) {
        $current = $a[$j];
        $i = $j - 1;//从原有序deck中最后一位开始比较,从右向左

        while ($i >= 0 && $a[$i] > $current) {
            $a[$i + 1] = $a[$i];//将数字向左移动一位
            $i--;
        }

        $a[$i + 1] = $current;
    }

    return $a;
}

function insertionSortDesc($a = array())
{
    $length = count($a);

    for ($j = 1; $j < $length; $j++) {
        $current = $a[$j];
        $i = $j - 1;

        while($i >= 0 && $a[$i] < $current) {
            $a[$i + 1] = $a[$i];//将数字向左移动一位
            $i--;
        }

        $a[$i + 1] = $current;
    }

    return $a;
}

print_r(insertionSortAsc($a));

print_r(insertionSortDesc($b));

输出结果:

result_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目标:从小到大(或从大到小)对数组进行排序。 给你一组数组,将他们排序。插入排序算法的步骤如下: 把未排序的数字放...
    云抱住阳光太阳没放弃发亮阅读 5,737评论 0 7
  • 1 前几天,章子怡给自己女儿过生日,在微博秀了一张一家四口的温馨照,结果又激怒了继女的生母葛荟婕。葛女士言语里的恨...
    心理咨询师李淑菊阅读 6,397评论 4 15
  • Vuex是什么? Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件...
    萧玄辞阅读 8,301评论 0 6
  • 寒夜如洗,十五刚过,月儿依旧圆满,皎洁明亮,月中隐隐约约有着桂树的轮廓,或者本就不是桂树,只是因了嫦娥的故事,而越...
    初憬阅读 3,707评论 0 1
  • 有时候,我会想起那两个女孩。 2010年春天,我在美国学习。闲余期间,想去西部看看。为了节约旅费,我在网上联系了一...
    蓝柿阅读 3,647评论 7 9