插入排序的原理是将无序数组遍历,将下一个元素按排序规律插入到已经排好的部分中。
在书中给出的伪代码是这样的:
INSERTION-SORT(A)
for j = 2 to A.length
key = A[i]
//Insert A[j] into the sorted sequence A[1..j - 1].
i = j - 1
while i > 0 and A[i] > key
A[i+1] = A[i]
i = i - 1
A[i + 1] = key
将代码换成注释重新填写一遍:
int* sort(***)//传入数组和需要排序的长度(或者需要排序的区间,根据需求改变传参)
{
//第一层循环,循环从第二个元素到最后一个元素,向前面已经排序完毕的子数组中插入
//从第二个元素开始的原因是单一元素肯定是有序的
//定义变量记录当前位置元素
//第二层循环,将大于(或小于)该元素的值全部后移一位
//当找到元素对应的位置后不再后移,直接放入该位置
//最后返回数组
}
最后将注释部分补全,这里用c++举例子:
int* sortA(int* A, int len){
/*
A:需要排序的数组;
len:数组中的元素数量;
*/
for(int j = 1; j < len; j++){
int key = A[j];
int i = j - 1;
while(i >= 0 && A[i] > key){
A[i+1] = A[i];
i = i - 1;
}
A[i + 1] = key;
}
return A;
}
就完成了插入排序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现