14-Si

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  7 随笔 :: 0 文章 :: 0 评论 :: 408 阅读

插入排序的原理是将无序数组遍历,将下一个元素按排序规律插入到已经排好的部分中。
在书中给出的伪代码是这样的:

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;
}

就完成了插入排序

posted on   14-Si  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示