6、排序与字符串算法全解析

排序与字符串算法全解析

1. 插入排序

插入排序类似于整理一副扑克牌,逐步将元素插入到已排序的部分中。以下是一段简单的插入排序代码示例:

while i > 0 and a_list[i - 1] > value:
    a_list[i] = a_list[i - 1]
    i = i - 1
a_list[i] = value

这段代码可以将列表 [6, 6, 8, 2] 转换为 [5, 6, 8, 2] ,完成了列表前两个元素的排序,剩余部分只需重复相同过程。

1.1 使用场景

插入排序和冒泡排序一样是稳定排序,时间复杂度为 $O(n^2)$,效率不高。但在处理几乎有序的数据时,插入排序表现出色。例如,对于列表 [1, 2, 3, 4, 5, 7, 6] ,由于插入排序中的内层 while 循环仅在两个数字顺序错误时执行,因此排序这个几乎有序的列表仅需八步,时间复杂度接近 $O(n)$。

2. 归并排序

归并排序是一种递归排序算法,它不断将列表分成两半,直到每个子列表只有一个元素,然后按正确顺序合并这些子列表。

2.1 工作原理

以下是归并排序的工作流程:
1. 分割列表 :使用递归将原始列表不断分割成只包含一个元素的子列表。例如,对于列表 [6, 3, 9, 2] <

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值