Day11:插入排序法(Insertion Sort)

谈谈插入排序(Insertion Sort)

在开始今天之前,先来看看影片(约2分钟)吧!

https://www.youtube.com/watch?v=OGzPmgsI-pQ

插入排序是从数列的左边开始,往右往右依次排序下去。过程中,左边的数一一完成排序,右边剩下尚未确认的数。在右边尚未搜寻的领域中取出一个数,插入已排序完成的领域中的适当位置。

若取出的数比排序完成领域中的所有的数都小,这个数移动到最左边之前,要进行比较和对调,第k回合必须进行k-1次的比较和对调的操作,因此最糟情况是第n回合发生n-1次的比较和对调,所以执行时间和气泡排序及选择排序一样是O(n^2)

import random

#从1-100中随机读取9个数字
nums = random.sample(range(1,100), 9)
print(nums)

# i控制j的上限值
for i in range(1, 9):
    #初始化变数nums[i]
    insert = nums[i]
    j = i-1
    #内层回圈从i-1到0,每次递减1
    while j>=0:
        if insert < nums[j]:
            nums[j+1]=nums[j]
        else:
            break 
        j = j-1
    #将变数insert储存到nums[j+1]
    nums[j+1]=insert
    print("插入排序执行次数为:", i ,"次")
    for item in nums:
        print(item,' ',end="")

插入排序法的最佳情况与最差情况:

  1. 最佳情况:

    • 比较次数:O(n)
    • 设定次数:O(n)
    • 说明:假设资料要以由小到大排序,输入资料也是以小到大,则为最佳情况。
  2. 最差情况:

    • 比较次数:O(n^2)
    • 设定次数:O(n^2)
    • 说明:假设资料要以由小到大排序,输入资料是以大到小,则为最差情况。

<<:  [Day11] 文本/词表示方式(二)-BOW与TFIDF

>>:  [Day9] Reactstrap = Bootstrap in React,你看离 React 越来越近了吧

Android Studio - AlertDialog - 单选列表

今天介绍一下单选的列表 透过简单的程序码就可以做出一个清晰易懂的选择表单 那就马上附上我的程序码~ ...

【C++】String and Number Reverse

Reverse ,看似一个简单的功能,但它却出现在许多公司的面试题库。 那我们直接来看它是如何实现的...

[Tableau Public] day 5:尝试制作不同种类的报表-2

第五天,星期日放假日,好像已经习惯了每日发一文章的习惯了~ 参考的资料来源一样是 day 4 的「O...

Day 9 : 存放资料的收纳库-串列资料(上)

若有一点程序语言的基础就会知道,在C语言中,有着用来存放资料的方法,叫做阵列(array),没学过的...

[Day13]Parking

上一篇介绍了Die Game,是一题判断骰子数字的题目,由於题目是中文,并且把解题丝路都跟你讲了,所...