选择,插入,冒泡排序小结
2017-09-24 20:32
176 查看
前言
排序在生活中处处可见,打牌用到了插入排序,站队用到了冒泡和选择。算法就是源于生活并高于生活的一门艺术。什么是高于生活?我个人的理解就是把常见的规律总结出来,并把这些规律灵活的应用在生活中。生活中虽然用到了排序但是为什么要抽象为算法呢?学习算法的目的就是为了把生活中的问题在计算机中用算法的工具进行解决。如何区分
冒泡排序:先拿出一个数据与它下一个数据进行比较,如果这个数据比较大,则进行交换交换之后继续与后一个比较,一轮结束之后得到最大值(放在最后);然后再重复这个过程直到选出所有的当轮最大值。插入排序:一个数组假设前面的是有序区从有序区的下一个数据分别跟有序区的数据进行比较,找到比自己数小的位置在这个位置的后面插入这个数据;然后继续有序区的下一个数据进行重复知道所有数据都有序。
选择排序:先假设一个数据时最大的然后所有的数据都跟这个数据进行比较,如果其他数据比这个大的话,把比这个大的数据的数组下标存在一个空间中直到找到数据最大的值得下标,然后进行交换;重复这个过程直到所有的数据有序。
简言之:两两比较并交换就是冒泡;拿一个跟所有的比找到一个最大或最小的就是选择;一个数据与有序区比较进行插入就是插入;
关键代码
//插入排序 for(i=1;i<a.length;i++) { for(j=i;j>0;j--) { if(a[j]>a[j-1]) { //交换 } } } //冒泡排序 for(i=0;i<a.length-1;i++) { for(j=0;j<a.length-i-1;j++) { if(a[j]>a[j+1]) { //交换 } } } //选择排序 int pos=0; for(int i=0;i<x.length-1;i++) { pos=i; for(int j=i+1;j<x.length;j++) { if(x[j]>x[pos]) { pos=j; } } //交换 }
稳定性
稳定性:所有相等的数经过某种排序之后还能保持排序之前的次序;反之不稳定;插入冒泡是稳定排序;选择排序是非稳定排序;
相关文章推荐
- (C语言)八大排序之:插入排序、冒泡排序、选择排序
- 插入排序是基本排序算法中最好的一种,虽然插入排序也是需要O(N^2)时间,但它比冒泡排序快一倍,比选择排序还要快点。
- 插入排序 选择排序 冒泡排序
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
- 排序算法---基础算法(冒泡排序,快速排序,选择排序,直接插入排序,桶排序)
- 冒泡排序, 简单选择排序, 插入排序, 希尔排序, 快速排序 js 实现
- 排序之冒泡排序、选择排序、插入排序
- 插入排序 选择排序 冒泡排序 快速排序
- 插入排序,选择排序,冒泡排序等常用排序算法(java实现)
- 十二.C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- 插入,选择,冒泡排序(C/python略)
- 算法--插入选择冒泡排序
- 常见排序集合(冒泡排序,选择排序,直接插入排序,二分插入排序,快速排序,希尔排序,归并排序)
- 插入排序,冒泡排序,选择排序
- 01. 选择、插入、冒泡排序
- IOS- 快速排序,冒泡排序,直接插入排序和折半插入排序,希尔排序,堆排序,直接选择排序
- 【每日算法】插入&选择&冒泡排序
- 选择、插入、冒泡排序
- 快速排序 选择排序 冒泡排序 二分插入排序时间性能