数据结构与算法之排序算法---冒泡排序
来源:互联网 发布:mac缺少图像源地址 编辑:程序博客网 时间:2024/05/17 20:27
数据结构与算法之排序算法—冒泡排序
- 冒泡排序的基本思想
- 完整实现代码
- 复杂度分析
2016年10月18日15:34:24 by:piaxiaohui
冒泡排序的基本思想
冒泡排序:是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。
冒泡排序的由来,就有些类似于水中的Bubble,比较轻的Bubble始终在水的底层,而较轻的Bubble在水的上层;较轻的Bubble会向水的上层移动,也就类似于Bubble Weight在比较的过程中,较轻的Bubble会向上冒。
完整代码实现
代码块语法遵循标准markdown代码,例如:
@requires_authorization#include <iostream>using namespace std;//功能函数:实现数组元素的交换功能void swap( int a[], int i , int j){ int temp = a[i]; a[i] = a[j]; a[j] = temp;}//功能函数:实现数组的打印功能void printArray( int a[],int length){ for( int i = 0; i < length; i++){ cout << a[i] << " "; } cout << endl;}//核心函数:实现冒泡排序,这里利用一个标志flag来减少比较次数//比如:比较有序的序列 2,1,3,4,5,6,7,8,9,10//在采取了标志位后:// i= 0,比较9次// i= 1,比较8次// i= 2,比较0次,此时没有任何数据交换,说明已经有序void BubbleSort( int a[],int length){ int flag = 1; for( int i = 0; i < length-1&&flag; i++){ flag = 0; cout << "第"<<i<<"趟排序后的序列为:"<<endl; for( int j = length-2; j >= i; j--){ if( a[j] > a[j+1]){ swap( a,j,j+1); flag = 1; } } printArray(a,length); }}int main(){ int a[10]={1,3,5,7,9,0,2,4,6,8}; int length = 10; cout<<"数组排序前为:"<<endl; printArray(a,length); BubbleSort(a,length); cout <<"数组排序后为:"<<endl; printArray(a,length); return 0;}
运行结果:
时间复杂度分析
(1) 最好的情况,也就是要排序的数组有序,没有数据交换
a[10]={1,2,3,4,5,6,7,8,9,10};
需要比较的次数为:n-1次 也就是i = 0时,需要比较9次
(2) 最坏的情况,也就是要排序的数组逆序,每一次比较都要逆序
a[10]={10,9,8,7,6,5,4,3,2,1};
i = 0 时,要比较的次数为9次
i = 1 时, 要比较的次数为8次
……
(n-1)+(n-2)+(n-3)+…+3+2+1 = n(n-1)/2;
因此时间复杂度为:O(n2);
0 0
- 数据结构与算法之二冒泡排序
- 数据结构与算法之冒泡排序
- 数据结构与算法之冒泡排序
- Python3 数据结构与算法之冒泡排序
- 数据结构与算法之排序算法---冒泡排序
- 【数据结构与算法】冒泡排序
- 数据结构与算法-冒泡排序
- 数据结构与算法-----冒泡排序
- 【数据结构与算法】冒泡排序
- 【数据结构与算法】冒泡排序
- 数据结构--排序算法之冒泡排序
- 数据结构 排序算法之冒泡排序
- 数据结构排序算法之冒泡排序法
- 数据结构<一> 排序算法之冒泡排序
- 数据结构与算法(冒泡排序算法)
- 数据结构-冒泡排序算法
- 数据结构-冒泡排序算法
- 数据结构与算法学习之路:优化的冒泡排序
- cookie 和session 的区别详解
- iOS开发 colorWithAlphaComponent的场景及效果
- GObject 学习笔记汇总---9
- 验证码自动识别平台与打码平台的区别
- 开源快快快
- 数据结构与算法之排序算法---冒泡排序
- 标称属性的概念分层
- Maven:编写Maven组件
- redis 详解(window安装)
- sheepdog+zookeeper存储集群搭建:4个节点安装sheepdog(其中有3个为zookeeper节点)
- Unity3d MovieTexture 实现视频播放
- 洛谷 P2118 比例简化
- Java实现异步发送邮件
- AJAX-实现服务端客户端异步通信