冒泡排序算法原理与实现
来源:互联网 发布:淘宝账号暂时被冻结 编辑:程序博客网 时间:2024/05/29 09:15
摘要:本文描述了冒泡排序的算法原理,给出了算法的逐步排序过程以及算法的实现。最后对算法的性能进行了分析。
1. 问题描述
输入:n个数的序列<a1,a2,a3,...,an>。
输出:原序列的一个重排<a1*,a2*,a3*,...,an*>;,使得a1*<=a2*<=a3*<=...<=an*。
2. 问题分析
冒泡排序:这一种最为简单的排序算法,每一次从数列中选取最大(最小)的数,然后把它放在最后(前面),重复执行此操作,直至所有数据有序。
3. 算法实现
template <typename T>void BubbleSort( CVector<T> &vec ){ size_t n = vec.GetSize(); for ( size_t i =0; i<n-1; i++ ) { for ( size_t j=0; j<n-i-1; j++ ) { if( vec[j] > vec[j+1] ) { Swap<T>( vec[j], vec[j+1] ); } }//for j }//for i}测试:
#define DATA_MAGNITUDE 1000double random(double start, double end){ return start+(end-start)*rand()/(RAND_MAX + 1.0);}//----------------------------------------------------------- srand( unsigned(time(0))); for ( int i=0; i<DATA_MAGNITUDE; i++ ) { vec2.PushBack( random(1, DATA_MAGNITUDE) ); }int size = 20>DATA_MAGNITUDE? 20 : DATA_MAGNITUDE; BubbleSort<int>( vec2 ); for ( size_t i =0; i < 20; i++ ) { cout<<vec2[i]<<" "; } cout<<endl;
4. 算法分析
compmovebestn(n-1)/2 = o(n^2)0worstn(n-1)/2 = o(n^2)n(n-1)/2 = o(n^2)avgn(n-1)/4 = o(n^2)n(n-1)/4 = o(n^2)
best: Data = {1,2, 3, 4, 5, 6, 7}
comp: n-1 + n-2 + .... + 1 = n(n-1)/2
move : 0
===============================================================================
基础排序O(n^2)
高级排序O(nlogn)
交换冒泡排序快排插入插入排序希尔选择选择排序堆排序
- 冒泡排序算法原理与实现
- 冒泡排序算法的原理与实现
- 选择排序,冒泡排序,排序算法实现与原理
- 排序算法一:冒泡排序,插入排序以及选择排序原理与MATLAB实现
- 冒泡排序算法原理及JAVA实现
- 冒泡排序算法原理及java实现
- 冒泡排序算法原理及实现
- 冒泡排序算法原理及JAVA实现
- 冒泡排序算法原理及JAVA实现
- 【Java基础】冒泡排序算法原理+实现
- 冒泡排序的原理与实现
- 算法--冒泡排序原理
- 冒泡算法原理与代码实现
- Java实现选择与冒泡排序算法
- 【排序算法】冒泡排序原理及Java实现
- 【排序算法】冒泡排序原理及Java实现
- 排序算法—冒泡排序算法分析与实现(Python)
- 实现冒泡排序算法
- 程序有误,为什么Keil却没有报错
- wxPython Dialog点两次关闭才关了的原因
- STC89C51单片机通讯协议
- NS2中无线trace分析(第3课)
- JavaScript继承详解(四)
- 冒泡排序算法原理与实现
- 面向程序员的数据库访问性能优化法则
- 鄙人java面试题库
- Poj_1008--Maya Calendar
- mysql基础回顾
- 设计模式之适配器模式
- 飘逸的python - __dict__的妙用
- MyEclipse中利用Jetty部署web工程的问题
- MinGW的安装