Python数据结构与算法(14)---插入排序

简介: Python数据结构与算法(14)---插入排序

插入排序


插入排序,又名Insertion Sort,其原理是数列前面为排序完成的值,数列后面为未排序的值。


假设前面n-1(其中 n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。


按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。


图解插入排序

原理过程如下:


1.输入n个数值的列表

2.接着,进行下标0和1的数值比较,把大的放后面,小的插入到前面,第1轮排序结束(其前2位为排序完成的数列,后面n-2个为未排序的数列)

3.继续选择下标为的数值和下标为1的数值进行比较,大的后移1位,小的继续比较小标0的位置,大的后移,小的插入前面。

4.依次类推,直到n-1下标的数值插入完成,获得最终的排序结果。


图解插入排序:


第1次循环(i=1,j=1):


第2次循环(i=2,j=2):


第3次循环(i=3,j=3):


第4次循环(i=4,j=4):


第5次循环(i=5,j=5):


实战:插入排序

既然,我们即说明了其原理,又图解了其原理,相信读者对这个算法应该非常了解了。下面,我们使用Python来实现插入排序算法,示例如下:

def insert_sort(my_list):
    if len(my_list) == 1:
        return my_list
    for i in range(1, len(my_list)):
        temp = my_list[i]
        j = i
        while j > 0 and my_list[j - 1] > temp:
            my_list[j] = my_list[j - 1]
            j -= 1
        my_list[j] = temp
    return my_list
if __name__ == "__main__":
    my_list = [8, 0, 4, 3, 2, 1]
    print("排序前的数组:", my_list)
    print("排序后的数组:", insert_sort(my_list))


运行之后,效果如下:


相关文章
|
5天前
|
算法 搜索推荐 C语言
Python实现数据结构与算法
【5月更文挑战第13天】学习数据结构与算法能提升编程能力,解决复杂问题,助你面试成功。从选择资源(如《算法导论》、Coursera课程、LeetCode)到实践编码,逐步学习基本概念,通过Python实现栈、队列和快速排序。不断练习、理解原理,探索高级数据结构与算法,参与开源项目和算法竞赛,持续反思与实践,以提升技术能力。
6 0
|
5天前
|
机器学习/深度学习 算法 数据可视化
Python 数据结构和算法实用指南(四)(4)
Python 数据结构和算法实用指南(四)
10 1
|
5天前
|
机器学习/深度学习 存储 算法
Python 数据结构和算法实用指南(四)(3)
Python 数据结构和算法实用指南(四)
15 1
|
5天前
|
存储 算法 搜索推荐
Python 数据结构和算法实用指南(四)(2)
Python 数据结构和算法实用指南(四)
10 0
|
5天前
|
存储 算法 Serverless
Python 数据结构和算法实用指南(四)(1)
Python 数据结构和算法实用指南(四)
14 0
|
5天前
|
存储 算法 搜索推荐
Python 数据结构和算法实用指南(三)(4)
Python 数据结构和算法实用指南(三)
10 1
|
5天前
|
存储 搜索推荐 算法
Python 数据结构和算法实用指南(三)(3)
Python 数据结构和算法实用指南(三)
10 1
|
5天前
|
存储 算法 前端开发
Python 数据结构和算法实用指南(三)(2)
Python 数据结构和算法实用指南(三)
10 1
|
5天前
|
存储 算法 编译器
Python 数据结构和算法实用指南(三)(1)
Python 数据结构和算法实用指南(三)
13 1
|
5天前
|
Serverless Python
在Python中,用于实现哈希表的数据结构主要是字典(`dict`)
在Python中,用于实现哈希表的数据结构主要是字典(`dict`)
25 1