c语言排序算法优化方法,c语言中的冒泡排序算法优化.pdf

c语言中的冒泡排序算法优化

张朝鑫 ,颜昌沁

(昭通学院信息科学与技术学院 ,云南昭通 557000)

摘 要 排序是计算机程序设计语言中常见的内容 ,其中冒泡排序一般是以大数往后沉的方式来实现。传统的做法会

出现大量的无效操作 ,造成资源的浪费,经过一定的改进后 ,这样的算法效率得以提高。从其本质特点出发 ,进而分

析其特点得 出更为高效的优化方式。

关键词 算法 ;冒泡排序 ;优化

中图分类号 :TP301 文献标识码 :A 文章编号 :1671—7597(2013)19—0166—01

数学中的数值大小在计算机中经常需要按规律排列 ,传统 在进行到第3趟排序后已经排好。后面的6次排序均为无效操作。

算法有冒泡排序法和选择排序法两种。其中数冒泡排序法较为

’.2优化后的冒泡排序

经典。本文从传统方法的冒泡排序入手 ,对其进行常见的改进

上述 1.1中的算法简单、容易理解 ,但有很多情况下它都

算法分析比 ;最后提出一种比较更为合理的优化算法。

有几趟排序是不会有任何的操作。为了避免这种情况一些专家

1传统的■泡排序及改进 和学者提 出使用一个标记变量来解决,即当排序不发生任何数

1.1传统的冒泡排序 据交换时就立即停止 ;这样的解决办法即避免了无效的重复排

序 ,又避免了有限资源的浪费。

传统意义上 的冒泡排序算法为大家所熟悉。其基本思路

具体 的做法是 :在上述程序 的第 5行下加上语句 “int

为 :将数据序列存入数组中 ,如有 number个数需要排序则将

flag:”,第 lO行下加上语句 “flag=O:”,第 16行下加上语句

相邻的两个数进行比较 ,较大的数往后排列 ,如此类推则进行

“flag=1:”,第 l7行下加上语句 “if(flag==0)break:”;这样

number一1次 比较以后最大的一个数一定排在了数组的最后。这

在程序的外层循环执行到第4次的时候满足 了if的真分支 ,执

样进行一趟 比较就找出并定位一个数 ,重复以上操作number—1

行跳 出语句 ,结束并输出结果 ,显然程序执行的效率大为提高 ,

次即完成排序 。如下程序以定义宏为 l0个数为例 ,其中程序 的

l8行至 21行功能是打印输出每趟排序 的结果。(请在Vc下调 2一种提高 100%效率的优化算法——同时前后■泡

试程序 ,否则不能正常显示汉字) 从上面 的程序算法 中大家可以看出 ,不管数据序列如何 ,

1 #inc1ude 每趟排序至少能完成一个位置 的排序 ,即较大的数往后 冒泡。

2 #defineNUMBER lO 反过来思考同样较小的数也一样可以往前冒泡 ,而算法都是一

3 voidmainO 样的 :如果让其二者同时进行 ,其效率 自然提高一倍。程序的

4 { 循环体是从数组的最后一个开始执行 ,一趟小数向前冒泡至少

5 int NU

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值