插入排序 C++实现
来源:互联网 发布:lol数据受损 编辑:程序博客网 时间:2024/04/25 07:08
写给自己!!
插入排序算法,其如同打牌,手里总是已经排好续的牌,而桌面上的是未知牌,其思想是:拿起一张牌,与手中的牌从右到左(从大到小)进行比较,找到合适的位置插入即可。插入排序算法没有合并排序算好效率高,他随着输入的增大而增大。
代码思想:对于将要插入的第j个元素,与已经排序好的0…j-1个元素从j-1处开始比较,如果j-1比j的元素大,则将j-1处的元素往后移一个位置,依次比较,找到j的元素合适的位置,插入即可。代码如下:
void Insert::InsertSort(vector<int>& coll){ int count = coll.size(); for(int j=1;j<count;j++) { int key = coll[j]; int i=j-1; while(i>=0 && coll[i]>key) { coll[i+1]=coll[i]; i--; } coll[i+1]=key; } for(auto pos=coll.begin();pos!=coll.end();++pos) { cout<<*pos<<' '; } }
coll为待排序,插入排序是一种原地排序算法。先把第j个元素取出来给一个临时变量,这样一直向后移的时候就会出现一个空位置,例如把j-1的元素移到j处,就空了一个j-1的位置,其实实际上是有值的,此时coll[j-1]=coll[j],若此时while条件不成立时,把key赋值给coll[j-1]即可。
这里是两层循环,外层循环是对待排序的数组的每一个元素进行遍历,内层循环是对已经排序好的元素中找到即将要插入的元素的位置。
0 0
- 插入排序C实现
- C实现插入排序
- 插入排序 C实现
- 插入排序C语言实现
- C/C++实现插入排序
- 插入排序的c实现
- 插入排序c语言实现
- 插入排序C语言实现
- 插入排序C语言实现
- 插入排序(C语言实现)
- 插入排序(C实现)
- 插入排序C语言实现
- 插入排序C语言实现
- c语言实现插入排序
- c语言实现插入排序
- linux c 实现插入排序
- 插入排序C语言实现
- C插入排序法实现
- 基于Android手机开发平台的移动数字图书馆服务系统研究
- Scala微服务架构
- 关于scanf、sscanf和sscanf_s
- 全球定位系统在移动上的应用
- Android Geocoder异常现象
- 插入排序 C++实现
- android应用登录模块访问mysql数据库小记
- 实现查询地址和路线导航的代码
- Android控件之AutoCompleteTextView、MultiAutoCompleteTextView探究
- AIDL(进程间通信)
- sencha touch 创建app后,修改启动画面
- 如何编写高效的手持设备程序代码
- Day 6:在 Java 虚拟机上使用 Grails 进行快速 Web 开发
- Android地图开发中的地理编码与地理反编码