zoukankan      html  css  js  c++  java
  • 插入排序

     1 #define N 10
     2 
     3 #include <iostream>
     4 #include <cstdlib>
     5 #include <algorithm>
     6 #include <vector>
     7 
     8 using namespace std;
     9 
    10 void InsertionSort(vector<int> &intvec)
    11 {
    12     for (int j = 1; j < N; ++j)
    13     {
    14         int key = intvec[j];
    15         int i = j - 1;
    16         while (i >= 0 && intvec[i] > key)
    17         {
    18             int k = i + 1;
    19             intvec[k] = intvec[i];
    20             --i;
    21         }
    22         int k = i + 1;
    23         intvec.erase(intvec.begin() + k);
    24         intvec.insert(intvec.begin() + k, key);
    25     }
    26 }
    27 
    28 int main(void)
    29 {
    30     vector<int> intvec;
    31     cout << "Please Input " << N << " IntNum:" << endl;
    32     for (int i = 0; i < N; ++i)
    33     {
    34         int j;
    35         cin >> j;
    36         intvec.push_back(j);
    37     }
    38     InsertionSort(intvec);
    39     for (auto c : intvec)
    40     {
    41         cout << c << " ";
    42     }
    43     cout << endl;
    44     system("pause");
    45     return 0;
    46 }

    如下图所示:

      ①.整型3拷贝给key

      ②.与整型4做比较小于整型4,于是整型4向后移动,原整型3的前面没有任何元素,将key拷贝到整型3的位置

      ③.整型1拷贝给key

      ④.与整型4做比较小于整型4,于是整型4向后移,又与整型3做比较小于整型3,整型3向后移,原整形3前面没有任何元素,将key拷贝到整型3的位置

      ⑤.整型2拷贝给key

      ⑥.与整型4做比较小于整型4,于是整型4向后移,又与整型3做比较小于整型3,整型3向后移,与整形3前面的整型1做比较大于整型1,结束比较,将key拷贝到原整型3的位置

  • 相关阅读:
    共享库的使用(.so)文件
    C/C++ 的宏中#和##的作用和展开
    有趣的打字训练
    libtool 创建库的工具
    vcpkg-微软开发的VC++打包工具
    Q他中的乱码再理解
    关于头文件和源文件的分别
    std::set 中内部元素有序条件删除的理解
    python 的 字节码 导入使用
    Pychar-20170301快捷键
  • 原文地址:https://www.cnblogs.com/mubu/p/5779782.html
Copyright © 2011-2022 走看看