基本排序方法之一——冒泡排序及其改进
2015-08-01 16:14
351 查看
冒泡排序是一种典型的交换类排序方法。
冒泡排序的基本思想:通过无序区中相邻记录关键字间的比较和位置的交换,使关键字最小的记录如气泡一般逐渐往上“漂浮”,直至“水面”。
冒泡排序的C语言实现方法如下:
改进的冒泡排序就是在进行每趟排序之前,设置一个交换标志位并清零零,发生记录交换则置位。当某趟比较不出现记录交换,说明整个排序已完成,可以提前结束排序。改进后的冒泡排序相比于冒泡排序在比较次数上有所降低。
改进后的冒泡排序的C语言实现方法如下:
冒泡排序的基本思想:通过无序区中相邻记录关键字间的比较和位置的交换,使关键字最小的记录如气泡一般逐渐往上“漂浮”,直至“水面”。
冒泡排序的C语言实现方法如下:
int BubbleSort(int a[], int len) { int i, j, temp, CompareNum=0; for(i=0; i<len-1; i++) // 最多需len-1趟排序 for(j=0; j<len-i-1; j++) // 每趟排序最多需要len-i-1次比较 { if(a[j] > a[j+1]) // 将较大的值放到后面 { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } CompareNum++; // 比较次数加1 } return CompareNum; }
改进的冒泡排序就是在进行每趟排序之前,设置一个交换标志位并清零零,发生记录交换则置位。当某趟比较不出现记录交换,说明整个排序已完成,可以提前结束排序。改进后的冒泡排序相比于冒泡排序在比较次数上有所降低。
改进后的冒泡排序的C语言实现方法如下:
int BubbleImprovedSort(int a[], int len) { int i, j, temp, CompareNum=0; int exchange; // 交换标志,若某趟排序中所有元素位置未发生交换则说明排序完成 for(i=0; i<len-1; i++) // 最多需len-1趟排序 { exchange = 0; for(j=0; j<len-i-1; j++) // 每趟排序最多需要len-i-1次比较 { if(a[j] > a[j+1]) // 将较大的值放到后面 { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; exchange = 1; } CompareNum++; // 比较次数加1 } if(exchange == 0) // 说明某趟排序没有发生交换,也即排序完成,可以提前终止 return CompareNum; } return CompareNum; }
相关文章推荐
- struts学习笔记(六)标签
- 软件工程—思考项目开发那些事(一)
- PHP代码调试总结
- Box of Bricks
- 二叉树的最大深度
- SPRING配置事务回滚
- Web列表分页--(单页web)容易上手的方法
- 面向互联网的文本信息处理,语音和音乐搜索技术的发展现状【搜集资料时学习所得,未详加整理】
- HTTP请求与数据下载
- 正式开通CSDN博客!
- Date类型数据的获取与转换与单选框按钮数据的获取
- hdoj.5115 Dire Wolf【区间DP】 2015/08/01
- HDU 5335(2015 ACM多校训练第四场1009)
- hdu-4970--Killing Monsters--数组的巧妙
- java技术经理面试题
- C语言编程入门——数组(上)
- Tom and paper
- Servlet实现文件上传,可多文件上传
- nyoj 九的余数
- Scala入门到精通——第十四节 Case Class与模式匹配(一)