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的位置