设为首页 加入收藏

TOP

8.5.2 冒泡法排序实例
2013-10-12 09:25:20 来源: 作者: 【 】 浏览:122
Tags:8.5.2 冒泡 排序 实例

8.5.2  冒泡法排序实例

冒泡法排序实例是计算机编程中的一个经典算法,实现多个数值的排序。方法是多次循环进行比较,将大数。每次循环时,找出剩余变量里的最大值,然后减小查询范围。这样经过多次循环以后,就完成了对这个数组的排序。这种排序的算法可用图8-1来表示。

冒泡法排序使用了反复循环和比较的算法,执行了下面这些步骤。

在第一次循环时,拿第1个数与第2个数进行比较,如果第1个数小于第2个数,就用一个中间变量使这两个数交换。这样就使第1个和第2个数从大到小排列。

 

图8-1  冒泡法排序的算法

再用第1个数与第3个数比较,使这两个数从大到小排列。用同样的方法,用第1个数与后面所有的数进行比较。

经过了第1轮循环比较以后,第1个数一定是所有数里面最大的数。

进行第2轮比较。这时让第2个数与后面所有的数比较,使用这个数是这些数里面的最大数。

用循环的方法,依次用后面的一个数与这个数后面的所有数进行比较,这样就完成了这些数的从大到小排序。

【范例8-11】用for循环语句实现冒泡法排序。下面的程序是使用冒泡法排序的例子。在这个程序中,需要注意两次循环比较。

实例代码8-11

  1. 01  #include <stdio.h> 
  2. 02  int main()  
  3. 03  {  
  4. 04     int a[10];                       /*定义一个整型数组。*/  
  5. 05     int i,j,temp;                    /*定义循环变量和中间变量。*/  
  6. 06     for(i=0;i<10;i++)                /*进行循环输入变量。*/  
  7. 07     {  
  8. 08        printf("please enter a number:\n");   /*输出提示。*/  
  9. 09        scanf("%d",&a[i]);            /*输入变量赋值给数组变量。*/  
  10. 10     }  
  11. 11     for(i=0;i<10;i++)                /*进行10次循环。*/  
  12. 12     {  
  13. 13        for(j=i+1;j<10;j++)           /*循环比较剩余的变量。*/  
  14. 14        {  
  15. 15           if(a[i]<a[j])              /*如果前面一个数比后面数小,交换两个数的值。*/  
  16. 16           {  
  17. 17              temp=a[i];  
  18. 18              a[i]=a[j];  
  19. 19              a[j]=temp;  
  20. 20           }  
  21. 21        }  
  22. 22     }  
  23. 23     for(i=0;i<10;i++)                /*循环输出排序以后的结果。*/  
  24. 24     {  
  25. 25        printf("%d  ",a[i]);  
  26. 26     }  
  27. 27     return 0;  
  28. 28  }  

【执行结果】编译并运行这一个程序,根据程序的提示输入10个变量,程序会对这些变量进行排序,然后输出排序以后的变量。运行结果如下所示:
  1. please enter a number:  
  2. 9  
  3. please enter a number:  
  4. 10  
  5. please enter a number:  
  6. 3  
  7. please enter a number:  
  8. 4  
  9. please enter a number:  
  10. 8  
  11. please enter a number:  
  12. 6  
  13. please enter a number:  
  14. 0  
  15. please enter a number:  
  16. 1  
  17. please enter a number:  
  18. 7  
  19. please enter a number:  
  20. 6  
  21. 0  1  3  4  6  6  7  8  9  10  

【代码解析】

代码第11~22行使用冒泡法进行排序。读者需要仔细体会冒泡法排序的算法实现原理。

代码第23~26行打印排序后的结果。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇8.1 数组的理解与操作 下一篇8.5.1 学生成绩统计实例

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: