排序算法之插入排序

插入排序是一种简单且易于理解的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上通常采用in-place排序(即只需用到O(1)的额外空间的排序),因此在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

以下是插入排序的基本步骤:

  1. 从第一个元素开始,该元素可以认为已经被排序。
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描。
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置。
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。
  5. 将新元素插入到该位置后。
  6. 重复步骤2~5。

插入排序的时间复杂度为O(n^2),其中n是需要排序的元素数量。在最坏的情况下,插入排序需要比较n*(n-1)/2次,因此它的时间复杂度是O(n^2)。然而,插入排序在处理小型数据集时可能表现得相对较快,因为它的实现相对简单。

以下是一个Python实现插入排序的例子:

def insertion_sort(arr): for i in range(1, len(arr)): key = arr[i] j = i-1 while j >=0 and key < arr[j] : arr[j+1] = arr[j] j -= 1 arr[j+1] = key return arr

这个函数接受一个列表作为参数,并返回一个已排序的列表。内部的循环用于遍历列表中的每个元素,并将其插入到已排序序列中的正确位置。在每次迭代中,我们维护一个"key"变量,它存储当前元素的值。我们从当前元素的左侧开始向前扫描已排序序列,如果找到一个元素大于"key",则将它向右移动一位,直到找到"key"的正确位置,然后将其插入。

插入排序在处理小规模数据时非常有效,但对于大规模数据集,它的性能可能会变得较差。因此,在实际应用中,通常会选择更高效的算法,如快速排序、归并排序或堆排序等。

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!

扫码进群领资料icon-default.png?t=N7T8https://s.pdb2.com/pages/20230519/16QijNiGb32IFIn.html

排序算法之插入排序_第1张图片

你可能感兴趣的:(排序算法,算法,数据结构)