插入排序相对比较简单,它是原址排序,平均时间复杂度为O(n2),最优时间复杂度为O(n),当数组是正序时达到最优的情况。逆序的时候,时间复杂度最坏,为O(n2)。
思路:插入排序的基本想法就是把数组分为2部分,前一部分是排好序的,后面是待排序的。每一次从待排序的数组中拿出一个数,如果这个数大于已经排好序的数组的最后一个数,那么这个数就插入到排好序的数组的末尾,如果这个数小于排好序的数组的最后一数,它与最后一个数交换,继续与前一个数比较,直到找到合适的位置结束。
def insert_sort(alist):
for i in range(1, len(alist)):
if alist[i] < alist[i-1]:
alist[i], alist[i-1] = alist[i-1], alist[i]
j = i-1
while j > 0:
if alist[j] < alist[j-1]:
alist[j], alist[j-1] = alist[j-1],alist[j]
j -= 1
本文深入解析了插入排序算法,一种简单的原址排序方法。通过将数组分为已排序和未排序两部分,逐步将未排序的元素插入到已排序部分的正确位置,实现整个数组的排序。文章详细介绍了插入排序的时间复杂度,包括平均情况下的O(n^2)和最优情况下的O(n),并提供了Python代码示例。
1529

被折叠的 条评论
为什么被折叠?



