Visual C# 诠释常用排序算法
发布时间:2006-09-29 13:14:08 来源:天极开发 网友评论 0 条 3. 冒泡排序
3.1. 基本思想:
两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。
3.2. 排序过程:
设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止
【示例】:
49 13 13 13 13 13 13 13
38 49 27 27 27 27 27 27
65 38 49 38 38 38 38 38
97 65 38 49 49 49 49 49
76 97 65 49 49 49 49 49
13 76 97 65 65 65 65 65
27 27 76 97 76 76 76 76
49 49 49 76 97 97 97 97
3.3. 程序实现
程序支持顺序和倒序排列。
3.1. 基本思想:
两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。
3.2. 排序过程:
设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止
【示例】:
49 13 13 13 13 13 13 13
38 49 27 27 27 27 27 27
65 38 49 38 38 38 38 38
97 65 38 49 49 49 49 49
76 97 65 49 49 49 49 49
13 76 97 65 65 65 65 65
27 27 76 97 76 76 76 76
49 49 49 76 97 97 97 97
3.3. 程序实现
程序支持顺序和倒序排列。
| /// <summary> /// 冒泡算法 /// </summary> /// <param name="abarray"></param> /// <param name="IsAscending">是否顺序排序</param> /// <returns></returns> private static double[] BubbleArithmetic(double[] abarray ,bool IsAscending) { if(abarray.Length > 0 ) { for(int i = abarray.Length-1 ;i >=0 ;i--) { for(int j = i-1 ; j>=0 ; j--) { if(CheckAccordCondition(abarray[i],abarray[j],IsAscending)) { ExChangeValue(ref abarray[i],ref abarray[j]); } } } } return abarray; } /// <summary> /// 交换数据 /// </summary> /// <param name="A"></param> /// <param name="B"></param> private static void ExChangeValue(ref double A , ref double B) { double Temp = A ; A = B ; B = Temp ; } /// <summary> /// 是否符合条件 /// </summary> /// <returns></returns> private static bool CheckAccordCondition(double data1 ,double data2, bool IsAscending) { if(data1 > data2) { return IsAscending == true ? true :false; } else { return IsAscending == true ? false :true ; } } |
- 推荐阅讯
- 用VC实现对超长数据库字段的操作
- 用Visual C++实现PDF文件的显示
- Visual C++ 2005图像编程之属性设置栏
- 利用VC++实现AVI文件的合成和分解
- Visual C#2005快速入门之声明bool变量
- VC++设计基于ODBC的数据库管理系统
- 利用VC打造自己的资源浏览器
- 用DLL控制Windows中进程的方法
- Visual C# 2005快速入门之编写方法
- VC#2005快速入门之使用while语句
- 阅读排行
- 1.VC++编程实现广告窗口自动关闭
- 2.深入浅出VC++串口编程之基于控件
- 3.解读VC++编程中的文件操作API和CFile类
- 4.利用Visual C#实现ICMP网络协议
- 5.深入浅出VC++串口编程之第三方类
- 6.掀起你的盖头来——谈VC++对象模型
- 7.Visual C#中用WMI控制远程计算机
- 8.深入浅出VC++串口编程之基于Win32 API
- 9.Visual C++2005中开发自定义绘图控件
- 10.深入浅出VC++串口编程之基本概念
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
