什么是Python中的插入排序?

什么是Python中的插入排序?

插入排序是一种简单的排序数组的方法。在这种技术中,数组被虚拟地分为已排序和未排序的部分。从未排序的部分中选择一个元素,并将其放在已排序部分的正确位置上。

  • 遍历数组元素从1到n。

  • 如果位置i的数组元素大于其前身,则无需移动。

  • 如果位置i的数组元素小于其前身,则需要将其向左移动,直到我们找到小于它的前身或者到达数组的左侧最左位置。

例子

我们可以通过以下示例更清楚地理解上面的思想。假设我们有以下数组-

4 6 1 7 2 5

我们需要从索引1开始遍历数组(因为索引0没有前身)。

在索引1处 -

6大于其前身,因此无需进行任何操作。

4 6 1 7 2 5

在索引2处 -

4 6 1 7 2 5

1小于其前身,因此我们需要将其向左移动,直到我们找到小于它的前身或者到达索引0位置。在这种情况下,我们将到达索引0。

4 6 1 7 2 5

在索引3处 -

1 4 6 7 2 5

在索引4处 -

1 4 6 7 2 5

将2向左移,直到我们找到小于2的前身。

1 2 4 6 7 5

在索引5处 -

1 2 4 6 7 5

将5向左移,直到我们找到小于5的前身。

1 2 4 5 6 7

因此,我们获得了排序后的数组。

插入排序是一种原地排序算法,其时间复杂度为O(n^2),空间复杂度为O(1)。

更多Python相关文章,请阅读:Python 教程

例子

definsertionSort(arr):
    for i in range(1, len(arr)):
        key = arr[i] #获取每个元素
        j = i-1
        while j >= 0 and key < arr[j] : #不断向左移动直到到达索引0或者找到比key小的元素
                arr[j + 1] = arr[j]
                j = j-1
        arr[j + 1] = key

arr = [4,6,1,7,2,5]
insertionSort(arr)
for i in range(len(arr)):
    print (arr[i],end=" ")

输出

1 2 4 5 6 7

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程