今日事项-2024年7月19日
今日事项-2024年7月19日
吃透一个算法-堆排序

代码、代码注释与详细解释:
1 | |
实际数字带入代码:
假设我们有一个数组arr = [4, 10, 3, 5, 1],我们使用堆排序对其进行排序。
构建最大堆:
- 初始数组:
[4, 10, 3, 5, 1] - 调整后:
[10, 4, 3, 5, 1](将前四个元素调整为最大堆) - 继续调整:
[10, 5, 3, 4, 1](继续调整前三个元素)
- 初始数组:
交换堆顶元素与最后一个元素:
- 交换后:
[1, 5, 3, 4, 10] - 重新调整堆:
[5, 1, 3, 4, 10]
- 交换后:
重复步骤2:
- 交换后:
[4, 1, 3, 5, 10] - 重新调整堆:
[4, 1, 3, 5, 10](已经是有序的)
- 交换后:
最终结果:
- 排序后的数组:
[1, 3, 4, 5, 10]
- 排序后的数组:
中间涉及到的语法知识点:
函数定义:
- 使用
def关键字定义函数。 - 函数名和参数列表。
- 使用
参数传递:
- 函数参数
arr,n,i的传递。
- 函数参数
条件判断:
- 使用
if语句进行条件判断。
- 使用
索引计算:
- 计算左子节点和右子节点的索引。
变量赋值:
- 使用赋值语句更新变量值。
交换元素:
- 使用元组解包进行元素交换:
arr[i], arr[largest] = arr[largest], arr[i]。
- 使用元组解包进行元素交换:
递归调用:
- 函数
heapify的递归调用。
- 函数
循环结构:
- 使用
for循环进行迭代。
- 使用
数组长度获取:
- 使用
len(arr)获取数组长度。
- 使用
数组元素访问:
- 使用索引访问数组元素。
数组元素修改:
- 直接通过索引对数组元素进行修改。
注释:
- 使用
#进行单行注释,使用"""进行多行注释。
- 使用
详细讲解可以参考:姬如祎-十大经典排序算法—-堆排序(超详细)
看抓包方面的资讯
看SQL server 2014中sql语句的执行过程
今日事项-2024年7月19日
http://example.com/2024/07/19/今日事项-2024年7月19日/