插入排序:简单却高效的排序魔法
宝子们,今天咱们来聊聊算法世界里一个超实用又容易理解的排序方法——插入排序!它就像整理书架上的书籍一样,轻松让杂乱的数据变得井井有条。
什么是插入排序?
想象一下,你有一摞散乱的名片,现在要按照姓氏首字母顺序排列。你会怎么做呢?大概率是先拿起一张名片,然后在已排好序的那部分名片里找到合适的位置插入,再拿起下一张,重复这个过程,直到所有名片都排好序。插入排序的原理就和这差不多,它把数组分成已排序和未排序两部分,每次从未排序部分取出第一个元素,在已排序部分找到合适的位置插入。
算法步骤大揭秘
1. 初始化:把数组的第一个元素看作是已经排好序的部分,剩下的元素就是未排序部分。
2. 遍历未排序元素:从第二个元素开始,依次处理未排序部分的每个元素。
3. 寻找插入位置:对于当前要处理的元素,从已排序部分的末尾开始向前比较,如果已排序部分的元素比当前元素大,就把这个元素向后移动一位,给当前元素腾出位置。
4. 插入元素:当找到一个比当前元素小或者等于的元素时,就把当前元素插入到这个位置的后面。
5. 重复操作:直到未排序部分的所有元素都被处理完,整个数组就排好序啦!
代码示例(Python版)
【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
# 测试代码
arr = [12, 11, 13, 5, 6]
print("排序前:", arr)
sorted_arr = insertion_sort(arr)
print("排序后:", sorted_arr)
插入排序的优缺点
优点
o 简单易懂:算法逻辑清晰,容易实现,非常适合初学者理解排序的基本思想。
o 对小规模数据高效:当数据量较小时,插入排序的性能往往比一些复杂的排序算法还要好。
o 稳定排序:相同元素的相对顺序在排序前后不会改变。
缺点
o 时间复杂度较高:在最坏情况下(数组是逆序的),时间复杂度为O(n^2),对于大规模数据来说,效率会比较低。
宝子们,插入排序虽然简单,但在很多场景下都能发挥大作用哦!赶紧动手试试,把这个排序魔法收入囊中吧♂!
#插入排序 #算法学习 #编程技巧#软件测试 #自学软件测试
