排序——冒泡排序
来源:互联网 发布:2003表格重复数据标记 编辑:程序博客网 时间:2024/06/05 20:45
定义:
冒泡排序的基本思想就是:比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小的元素经过几次移动,最终浮到水面上。最终的顺序是从小到大的排序。
步骤:
假设当前要排序的无序数组的长度为N,要实现排序的步骤如下:
1.比较相邻的两个数据,如果前面的数据大于后面的,则交换两者的位置,否则则不交换;
2.对数组中从第0个元素到第N-1个元素进行一次遍历之后,最小的数据就“浮”到了数组的第0个位置;
3.设置起点位置为1,继续前面两步操作,直到N = N-1则表示排序完成。
C语言实现:
1.最基本的实现方式:
for (int i=0; i<v.size(); i++){ int temp = 0; for(int j=v.size()-1; j>0; j--){ if (v[j] < v[j-1]){ temp = v[j]; v[j] = v[j-1]; v[j-1] = temp; } } }
2.优化:
其实,假如有一趟排序中没有发现需要交换位置的气泡,则说明排序已经完成,因为冒泡排序过程可以在此趟排序后终止,用一个布尔值来标识一次循环排序中是否有位置交换,代码如下:
for (int i=0; i<v.size(); i++){ int temp = 0; exchange = false; for(int j=v.size()-1; j>0; j--){ if (v[j] < v[j-1]){ temp = v[j]; v[j] = v[j-1]; v[j-1] = temp; exchange = true; } } if (!exchange){ break; } }
总结:
每次排序都使有序区增加一个气泡,在经过n-1次排序之后,有序区就有n-1个气泡,而无序区中的气泡重量(数值大小)总是大于等于有序区中气泡的重量,所以整个冒泡排序过程之多需要进行n-1次排序。此算法的时间复杂度为:O(n*n),不算高效的算法。
0 0
- 排序——冒泡排序
- 排序——冒泡排序
- 排序——冒泡排序
- 排序——冒泡排序
- 排序——冒泡排序
- 排序——冒泡排序
- 内部排序—冒泡排序
- 排序算法—冒泡排序
- 排序方式—/冒泡排序/快速排序
- 冒泡—选择排序
- 排序—冒泡
- 排序算法1—插入排序、选择排序、冒泡排序
- 排序算法———冒泡排序
- 排序算法——冒泡法排序
- 排序算法——冒泡排序
- 排序算法——冒泡排序
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- [bzoj2818]gcd
- java的并发测试
- READING NOTE: Semantic Object Parsing with Graph LSTM
- 基因数据处理43之mango之503错误
- 2016SDAU课程练习三1016
- 排序——冒泡排序
- 无线通信大作业 开题报告
- openwrt中使用ubus实现进程通信
- window 局域网下文件共享的开启与关闭方法
- 上拉刷新--下拉加载XListView
- 计算机图形学(二)输出图元_16_字符函数
- [poj 1201]Intervals 差分约束
- 第一章 JAVA初步
- android shape的使用详解