冒泡算法改进--双向冒泡算法 Double Bubble
来源:互联网 发布:网站源码查看 编辑:程序博客网 时间:2024/06/08 14:44
转载请表明出处http://blog.csdn.net/yming0221/article/details/6967047
双向冒泡算法比单向冒泡更适用于序列基本有序,但是有小元素在尾部,例如数列
1,2,3,4,5,6,7,8,9,0
如果使用单向冒泡算法,时间复杂度将是O(n^2)
改进的双向冒泡时间复杂度是O(n)
下面是双向冒泡算法的代码
/*************************************************************************** Problem: 双向冒泡算法* Copyright 2011 by Yan* DATE:* E-Mail: yming0221@gmail.com************************************************************************//** R[]存放待排序数据,从0开始存放,共n个记录*/#define bool _Bool#define true 1#define false 0void Double_Bubble(int R[],int n){int i,j;int tmp;bool exchange=true;i=0;while(exchange){exchange=false;for(j=i;j<n-i-1;j++)//向右扫描{if(R[j]>R[j+1]){exchange=true;tmp=R[j];R[j]=R[j+1];R[j+1]=tmp;}}for(j=n-i-1;j>i;j--)//向左扫描{if(R[j]<R[j-1]){exchange=true;tmp=R[j];R[j]=R[j-1];R[j-1]=tmp;}}i++;//每趟扫描结束都可以在两头确定一个元素的位置}}
该算法还能进一步改进,就是在数列的两端设置bound,用于记录最后一次交换的位置,这样可以进一步减少比较次数,进而减小时间复杂度。
- 冒泡算法改进--双向冒泡算法 Double Bubble
- 冒泡(bubble)排序算法
- Double Bubble Sort(双向的冒泡排序)
- 冒泡排序改进算法(双向起泡)
- 改进版的冒泡排序(双向冒泡算法)
- 算法--冒泡排序 Bubble Sort
- 改进的冒泡算法
- 冒泡算法改进
- 冒泡算法的改进
- 冒泡算法及其改进
- 冒泡算法改进
- 冒泡算法改进
- 冒泡排序改进算法
- 双向冒泡排序算法
- 双向冒泡排序算法
- 改进的双向快速冒泡排序算法-Java版
- C#排序算法(一)冒泡排序(Bubble)
- Bubble Sort in C#(冒泡排序算法)
- UNICODE字符串和ANSI字符的转换
- Perl练习之验证身份证程序
- IN语
- 【ASP.NET】中一些常用的控件和事件
- KVO---Key Value Obersving
- 冒泡算法改进--双向冒泡算法 Double Bubble
- JSON(JavaScript Object Notation)
- JavaScript 各种参数 详解
- 得到系统磁盘大小和可用磁盘大小
- 常见嵌入式WEB服务器
- Java Web上传组件使用:JSPUpload
- DDWDF
- 【Nunit入门系列讲座 3】NUnit断言- 如何使用断言
- iphone模拟器截图