插入排序用法介绍Python

2023-10-01 20:48

插入排序是一种简单直观的排序算法。其基本思想是将待排序的元素一一插入到已排序的序列中,构建有序序列。本文将从多个方面详细讲解插入排序在Python中的实现及其应用。

1。插入排序的基本原理

插入排序是将待排序的元素一一插入到有序序列中的适当位置,通过不断扩展有序序列的长度来达到排序的目的。

def insert_sort(arr):
    对于范围内的 i(1, len(arr)):
        键 = arr[i]
        j=i-1

        当 j >= 0 且 arr[j] > 键时:
            arr[j + 1] = arr[j]
            j -= 1

        arr[j + 1] = 键

    返回目的地

# 测试
arr = [5, 2, 8, 9, 1, 3]
排序后的数组 = 插入排序(数组)
打印(已排序的_arr)

上面的代码实现了插入排序算法。通过循环遍历要排序的元素,将它们插入到排序序列中的适当位置。在内循环中,如果要插入的元素小于已排序序列中的元素,则将该元素移动一个位置,直到找到合适的位置。然后插入要插入的元素。

2。插入排序的时间复杂度

插入排序的时间复杂度为O(n^2),其中n是序列的长度。最好的情况是序列已经有序,此时的时间复杂度为O(n)。最坏的情况下,顺序完全颠倒,时间复杂度为O(n^2)。插入排序是一种稳定的排序算法,排序后相同元素的相对顺序不会改变。

3。插入排序的优化

在插入排序的实际应用中,可以采用一些优化策略来提高排序的效率。

1。二分查找插入

二分查找插入是插入排序的优化。通过二分查找的方式找到待插入元素的合适位置,可以减少比较次数,提高排序效率。

def binary_insertion_sort(arr):对于范围内的 i(1, len(arr)):
        键 = arr[i]
        左、右 = 0、i - 1

        当左 <= 右时:
            中=(左+右)//2
            如果 arr[mid] > 键:
                右=中-1
            别的:
                左=中+1

        对于范围内的 j(i - 1, left - 1, -1):
            arr[j + 1] = arr[j]

        arr[左] = 键

    返回目的地

# 测试
arr = [5, 2, 8, 9, 1, 3]
Sorted_arr = 二进制插入排序(arr)
打印(已排序的_arr)

2。插入排序的递归实现

插入排序还可以通过递归实现,将待排序的序列划分为多个子序列进行插入排序,然后将这些子序列合并,最终得到有序序列。

def recursive_insertion_sort(arr, n):
    如果 n <= 1:
        返回

    递归插入排序(arr,n - 1)

    最后 = arr[n - 1]
    j=n-2

    而 j >= 0 且 arr[j] > 最后:
        arr[j + 1] = arr[j]
        j -= 1

    arr[j + 1] = 最后一个

# 测试
arr = [5, 2, 8, 9, 1, 3]
递归插入排序(arr,len(arr))
打印(arr)

4。插入排序的应用场景

插入排序适用于小规模数据的排序以及已经基本有序的数据的排序。实际应用中,插入排序可以用来对一些较小的数据集进行排序,比如扑克牌排序、小型数据库的索引排序等。

5。总结

本文通过详细讲解介绍了插入排序的基本原理、时间复杂度以及优化策略。插入排序是一种简单有效的排序算法,在小规模数据排序和几乎有序数据排序方面都有良好的性能。