14-Si

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

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 2022-07-07 20:50  14-Si  阅读(28)  评论(0)    收藏  举报