// 插入排序
void insertSort(int array[], int length)
{
int i, j, key;
for (i = 1; i < length; i++)
{
key = array[i];
// 把i之前大于array[i]的数据向后移动
for (j = i - 1; j >= 0 && array[j] > key; j--)
{
array[j + 1] = array[j];
}
// 在合适位置安放当前元素
array[j + 1] = key;
}
}
求助大神!!! 谁能帮讲一下这个函数的思想吗?主要是第二个for循环这里。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
9条回答 默认 最新
- -瞌睡虫- 2017-11-10 02:30关注
假设数组:3 2 1 4
第一次循环: i = 1 => key = 2
进入第二个for:j=0 即 array[j] = 3 大于 key 则交换 此时数组:2 3 1 4
第二次循环: i = 2 => key = 1
进入第二个 for:j = 1 即 array[j] = 3 大于 key 则交换 此时数组:2 3 3 4
j = 0 即 array[j] = 2 仍然大于 key 交换 数组:2 2 3 4 跳出第二个for 时 数组:1 2 3 4本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
- ¥15 有赏,i卡绘世画不出
- ¥15 如何用stata画出文献中常见的安慰剂检验图
- ¥15 c语言链表结构体数据插入
- ¥40 使用MATLAB解答线性代数问题
- ¥15 COCOS的问题COCOS的问题
- ¥15 FPGA-SRIO初始化失败
- ¥15 MapReduce实现倒排索引失败
- ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
- ¥15 找一位技术过硬的游戏pj程序员