算法初探——插入排序
2016-04-09 17:39
183 查看
插入排序(Insertion Sort)是一种玩扑克的时候用的方法,我们摸牌时已经抽到的牌我们已经排好序了,抽上来一张新牌,我们一般不会直接放在最后,等全部抽完之后再进行排序,而是抽上来之后立刻放到对应的位置。
可以看GIF图了
抽牌的顺序就是 6 5 3 1 8 7 2 4
这里需要注意的操作是如何做到将新插入的记录放到它应该待的地方,而保证放好后序列依旧是有序的?
以3为例,当检测到它之前的元素大于它时,就依次向后移位。
可以看GIF图了
抽牌的顺序就是 6 5 3 1 8 7 2 4
这里需要注意的操作是如何做到将新插入的记录放到它应该待的地方,而保证放好后序列依旧是有序的?
以3为例,当检测到它之前的元素大于它时,就依次向后移位。
#include <iostream> #include <vector> #include <algorithm> using namespace std; void InsertSort(vector<int> & s); void Show(int x); int main() { using namespace std; vector<int> input = { 40, 8, 15, 18, 12 }; InsertSort(input); for_each(input.begin(), input.end(), Show); cin.get(); return 0; } void InsertSort(vector<int> & s) { for (int i = 1; i < s.size(); i++) { int j = i; int temp = s[j]; while (j-1>= 0 && s[j - 1]>temp) //位置还未找到时 { //循环移位 s[j] = s[j - 1]; j--; } s[j] = temp; } } void Show(int x) { cout << x << " "; }
相关文章推荐
- 插入排序
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例