C++下对冒泡排序算法的改进_第1页
C++下对冒泡排序算法的改进_第2页
C++下对冒泡排序算法的改进_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Visual C+下对冒泡排序算法的改进作者:佚名 文章来源:天极 点击数: 更新时间:2005-8-30【字体:小 大】【发表评论】【加入我的收藏夹】【告诉好友】【打印此文】【关闭窗口】 摘 要:本文对排序中最常见的起泡法进行分析,发现在实现单向起泡的同时可以实现双向起泡,从而实现了冒泡算法的改进,提高了运算速度。关键字:程序设计、起泡、双向起泡、VC+排序是在程序设计中常碰到的问题,排序算法也有很多种。起泡法是众所周知的排序算法,其原理是每次将相邻两个数进行比较,较大的下沉。其的主程序段如下(用VC+实现):Void Bubble Sort (int* pData,int Cou

2、nt) Int iTemp; for(int i=1;i<Count;i+) For (int j=Count-1;j>=i;j-) if(pDataj<pDataj-1) iTemp = pDataj-1; pDataj-1 = pDataj; pDataj = iTemp; 我们分析上述程序段可以发现起泡法是从一端开始比较的,第一次循环就是把最小数上升到第一位置,第二次循环就是把第二最小数上升到第二位置。如此循环实现数据的排序。那么我们是否可以找到最小数的同时找到最大数呢?当然可以。方法是在一端起泡时同时在另一端也进行起泡。即反向起泡。下面的程序段实现的是双向起泡:voi

3、d Bubble2Sort(int* pData,int Count) int iTemp; int left = 1; int right =Count -1; int t; do /正向的部分 for(int i=right;i>=left;i-) if(pDatai<pDatai-1) iTemp = pDatai; pDatai = pDatai-1; pDatai-1 = iTemp; t = i; left = t+1; /反向的部分 for(i=left;i<right+1;i+) if(pDatai<pDatai-1) iTemp = pDatai; pDatai = pDatai-1; pDatai-1 = iTemp; t = i; right = t-1; while(left<=right); 分析上面的程序段我们可以发现正向起泡时第一次循环找出了最小数,反向起泡第一次循环找到最大数。很显然在一次循环中即可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论