注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Leo

笑:胸怀,傲:实力,才能笑傲江湖。

 
 
 

日志

 
 

C语言两种重要排序法!  

2011-03-04 20:41:49|  分类: 大学留笔 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1、冒泡法排序

     原理是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
  由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

N个数用冒泡法排序,则第一趟要比较、交换N-1次,第二趟要比较、交换N-2次。。。。。。第i趟要比较、交换N-i次,共进行N-1趟排序完成。

所以有一下程序:

                        for(i=0; i<n-1; i++)

                        { 

                             for(j=0; j<n-i-1; j++){

                                 若a[j+1]<=a[j] 则a[j] 和 a[j+1]交换。

                                 }

                          };

 

2、选择法排序

n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。

代码:

                     for(i=0; i<n-1;  i++)

                     {

                      k=i;

                     for(j=i+1; j<n; j++)

                           {

                             if(a[j]<a[k])  k=j ;

                             t=a[k];

                            a[k]=a[i];

                            a[i]=t;

                            }

                     };

  评论这张
 
阅读(283)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017