liupeng19881028 2017-11-10 01:50 采纳率: 100%
浏览 902
已采纳

求助大神!!! 谁能帮讲一下这个函数的思想吗?主要是第二个for循环这里。

// 插入排序

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;

}

}

  • 写回答

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式