zoukankan      html  css  js  c++  java
  • 插入排序总结(来自算法导论)

      自己总结的!什么是插入 排序 ,一直 感觉非常的 含糊不清。

    下面 来做一个简单的总结,我因为不会 画图 ,所以用文字来进行总结,

    如果有一个 未排序的数组,如果这个数组是 :0,22,11,55,2

    那么 我们 怎么 来 进行排序呢,如果是使用 插入 排序。

    首先 我们 要 构造一个循环,这个循环是从2~LENGTH。

    为什么是从2开始,而不是从1开始呢?

    因为第一个元素无论如何是不需要 排序的,所以可以从2开始 进行排序。

    当我们第一次排序的时候,那么 肯定是把第二个元素和第一个元素进行比较。

    这次是进行 从小 到大的排序,好,我们 开始进行排序,第一次把第二个元素和第一个 元素 进行比较,

    由于这“第二个”元素可以是第N个元素,所以 我们有必要记录一下下标,我们把这个第N个元素的下标放到临时 变量 里面。

    然后我们 开始从第N-1个元素进行比较,我们必须去移动1~N-1个元素的位置,当然是向后移动,

    如果 元素这个第N个元素的值和 前面的值比较,如果 N-1(N是 变量)的值大于记录的值,那么我们先做的一件事 就是

    把变量中的前一个元素的值赋给后一个,然后 下标减一,这样 就实现了元素后移,当然最大的后移下标是这次外层循环的下标 。

    然后如果都KEY小于下标的值,那么循环结束,找到了和下标匹配的最大元素的值。

    然后把KEY值赋给这个下标的后一位值(这里还是不太明白 ),为什么这样呢?

    因为 外层循环其实是从第一项 开始的,而这里的里层循环是从0开始的!所以我们最多只能把这个值赋给第一项,而不是第0项!

    照这个思路理解,其实我们是给第1项到 第N项进行了排序!不知道 我理解得对不对!

    然后其他的就 依次类推 了 吧。

  • 相关阅读:
    20180710
    20180709
    20180706
    20180705
    20180704
    python3.x 函数的参数
    python函数返回值
    Centos7下命令笔记-ls
    CentOS系统内核、操作系统位数以及系统参数查看
    CentOS7 配置光盘iso镜像为本地yum源
  • 原文地址:https://www.cnblogs.com/kmsfan/p/4765907.html
Copyright © 2011-2022 走看看