现在的位置: 首页 > 操作系统 > 正文

关于冒泡排序算法

2020年02月10日 操作系统 ⁄ 共 1688字 ⁄ 字号 评论关闭

今天我和大家一起讨论下冒泡排序算法

冒泡排序算法,是一种神奇的算法,它是通过将相邻的2个数进行对比,依据从大到小,或者从小到大的顺序进行交换,最后得出排序结果,核心公式是i = n-1,j = n-1-i,i代表要进行多少趟的循环,j代表每趟需要进行多少次两两比较,如果有10个数,那么就只要循环9趟,每趟只需要比较n-1-i次;理论的不说太多,具体如下:

例如这里有10个数:15,32,12,16,90,49,17,26,72,43;我们按照从大到小的顺序排列.

第1趟:

第1次两两比较:2 15 12 16 90 49 17 26 72 43; 因为43比72小,所以不用交换

第2次两两比较:32 16 15 12 9049 17 26 72 43; 因为72比26大,所以72和26进行交换;

第3次两两比较:32 16 15 12 90 49 26 17 72 43;

第4次两两比较:32 16 15 12 90 49 26 17 72 43;

第5次两两比较:32 16 15 12 90 49 26 17 72 43;

第6次两两比较:32 16 15 90 12 49 26 17 72 43;

第7次两两比较:32 16 90 15 12 49 26 17 72 43;

第8次两两比较:32 90 16 15 12 49 26 17 72 43;

结果:90 32 16 15 12 49 26 17 72 43;

通过第一趟(9次两两比较)终于把10个数中的最大的数排在左边了.

接下来我们用程序来实现冒泡排序法,还是10个数,还是从大到小的顺序.

[plain] view plain copy print?

  1. /*使用冒泡排序法实现数组的从大到小排序*/ #include<stdio.h>
  2. intmain(void) {
  3. inta[10]; inti,j,t; //变量t用来交换两个数的值
  4. printf("Pleaseinput10numbers:\n");
  5. for(i=0;i<10;i++) {
  6. printf("a[%d]=",i); //使用循环让用户输入 scanf("%d",&a[i]);
  7. }
  8. /*开始对用户输入的数进行从大到小的排序*/
  9. for(i=0;i<9;i++) {
  10. for(j=0;j<9-i;j++) {
  11. if(a[j]<a[j+1]) {
  12. t=a[j]; //把较小的数的值赋给t a[j]=a[j+1]; //把较大的数的值赋给较小的数
  13. a[j+1]=t; //把t的值赋给原来较大的数以完成交换 }
  14. } }
  15. printf("\n"); printf("排序后的结果为:\n");
  16. for(i=0;i<10;i++) {
  17. printf("%d",a[i]); }
  18. printf("\n\n"); getch(); //用于解决编写的可执行文件一闪而过的情况
  19. }

/*使用冒泡排序法实现数组的从大到小排序*/#include <stdio.h>int main (void){ int a[10]; int i, j, t; //变量t用来交换两个数的值 printf("Please input 10 numbers:\n"); for (i=0; i< 10; i++) { printf("a[%d]=", i); //使用循环让用户输入 scanf("%d", &a[i]); } /*开始对用户输入的数进行从大到小的排序*/ for (i=0; i < 9; i++) { for(j=0; j<9-i; j++) { if (a[j] < a[j+1]) { t = a[j]; //把较小的数的值赋给t a[j] = a[j+1]; //把较大的数的值赋给较小的数 a[j+1] = t; //把t的值赋给原来较大的数以完成交换 } } } printf("\n"); printf("排序后的结果为:\n"); for (i=0; i<10; i++) { printf("%d ", a[i]); } printf("\n\n"); getch(); //用于解决编写的可执行文件一闪而过的情况}

运行结果如下图:

最后送同学们一句话:编程路漫漫,需其修远兮;遇到难的程序,多单步调试,耐得住寂寞,才守得住繁华!

本文永久更新链接地址:http://www.xuebuyuan.com/Linux/2017-01/139679.htm

以上就上有关关于冒泡排序算法的全部内容,学步园全面介绍编程技术、操作系统、数据库、web前端技术等内容。

抱歉!评论已关闭.