插入排序-Python实现


1、直接插入排序

直接插入排序原理。

在未排序的序列中,构建一个子排序序列,直至全部数据按照要求排序完成。

将待排序的数,插入到已经排序的序列中合适的位置。

增加一个哨兵,放入待比较值,让他和后面已经排好序的序列比较,插入合适的地方。

2、原理

增加一个哨兵位,每轮比较将待比较数放入。

哨兵依次和待比较的前一个数据比较,大的数靠右移动,找到哨兵中的值插入位置.

每一轮结束后,得到一个从开始到待比较数的位置的一个有序序列。

3、总结

最好情况,正好是升序排列,比较迭代n-1次。

最差情况,正好是降序排列,比较迭代1,2,,.....n-1即n(n-1)/2

使用两层嵌套循环,时间复杂度O(n**2)

稳定排序算法。

使用在小规模数据比较

优化点:

如果比较操作耗时大的话,可以采用二分查找的方式来提高效率。(查找是在已经排序的区域).  if判断加上循环。

4、#插入排序

#思路,增加一个哨兵岗位,数据依次和哨兵岗位比较,大数右移,直到放到合适为止。

 

 

list3 = [3,9,0,1,5,7,2,4,8,6]

nums = [0] + list3

length = len(nums)

count = 0

count_swap = 0

for i in range(2,length):

    nums[0] = nums[i]

    j = i -1  #前一个数的索引

    count += 1

    if nums[j] > nums[0]:

        while nums[j] > nums[0]:  #大数右移

            nums[j+1] = nums[j]   #依次右移

            j -= 1   #右移几次就要减去几次

            count_swap += 1

        nums[j+1] = nums[0] #在插入右侧+1

        

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM