首页资讯科技 插入排序算法

插入排序算法

陈新龙排序算法是编程考试中最常见的题目,几乎所有的笔试和面试都会考到,因为它体现的就是程序员的算法基础和逻辑思维能力,经常看《电脑报》的读者们都知道,我们已经讲了多种排序算法比如冒泡排序、选择排序、桶排序……那么大家有没有思考一个问题:为什…

插入排序算法

陈新龙

算法是编程考试中最常见的题目。几乎所有的笔试和面试都会考,因为它体现的是程序员的算法基础和逻辑思维能力。经常阅读计算机新闻的读者知道,我们已经讨论了许多种排序算法,如冒泡排序、选择性排序、桶排序...

所以你有没有想过一个问题:为什么排序算法这么多?首先,因为排序的思路是多样的,从不同的角度解决排序问题会导致排序方法的不同。另外,不同的排序算法各有优缺点。当数据大小不同时,可以选择合适的排序算法。

今天就和大家分享一个新的排序算法“插入排序”,插入排序分为前插序和后插序,它的基本思想是将数组的第一个数认为是有序数组,从后往前或者从前往后扫描该有序数组,把数组中剩余n-1个数,根据数值大小,有序插入到前面序列中,直至数组所有数有序排列为止。这样的话,n个元素只需要进行n-1趟排序,比多数排序算法的效率更高。

今天给大家分享一种新的排序算法“插入排序”。插入排序可分为前插入顺序和后插入顺序。它的基本思想是把数组中的第一个数看作一个有序数组,从后到前或从前到后扫描这个有序数组,将数组中剩余的n-1个数按数值插入到前面的序列中,直到数组中所有的数都排列有序。这样n个元素只需要排序n-1次,比大多数排序算法效率都高。

例如,有一组序列号[53,27,36,15,69,42]。首先,要排序的数组中的第一个元素53被识别为有序元素,因此排序从第二个元素27开始。第一次排序时,从有序序列中找出27插入的位置。当27小于53时,应插在53之前。此时提取27后,将53后移,27放在原来的53点位置,第一次排序完成。

在第二次排序中,从有序序列中找到36的插入位置。36小于53大于27。36的插入位置在27和53之间。此时,在提取36之后,将53向后移动,然后将36放置在原件53的位置,并完成第二次排序。

其余数字15、69和42的排序过程相同。找到合适的位置,通过移动和插入完成排序。最终排序顺序结果是[15,27,36,42,53,69],一共排序五次。

了解了插入排序的运行过程和思路后,我们可以尝试着用Scratch将代码拼搭出来。首先新建两个列表用于存放原始数列和排序后的数列,开始时将序列中所有的内容全部清空。通过重复执行的方法,将1-50之间的随机数添加入原数列列表中(随机数的范围和重复执行的次数可自定义)。

在了解了运行流程和插入排序的思路后,可以尝试用Scratch拼出代码。首先,创建两个新的列表来存储原始序列和排序后的序列。在开始的时候,清除系列空中的所有内容。通过重复执行的方式将1到50之间的随机数添加到原系列的列表中(随机数的范围和重复执行的次数可以自定义)。

其次,创建两个关键变量“进行中”和“已分类”。由于插入排序从第二个项目开始,变量“进行中”表示要插入排序的序列的顺序位置。变量“已排序”是指序列中已排序的序列组从第一项开始,反复执行,直到进程中的项数大于序列中的总项数,这样就可以跳出循环。在循环中,将要处理的数字与排序后的序列中的数字进行比较,通过比较大小将处理后的数字插入到适当的位置。流程中的编号在排序后的序列中排在下一位,流程中的编号随着循环每次递增1,直到循环序列结束,排序结束。

插入排序的好处是稳定性和速度,但是比较的次数不一定。比较次数越少,插入点后移动的数据越多。尤其是当数据总量巨大时,就需要链表来解决这个问题。

本文来自网络,不代表管理窝立场。转载请注明出处: https://www.guanliwo.com/a/zx/63376.html
上一篇电池外面的铝膜
下一篇 动态手势识别开源代码
管理窝

作者: 管理窝

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部