zoukankan      html  css  js  c++  java
  • 数据结构冒泡排序

    冒泡排序的思想:

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

    代码:

    #include<stdio.h>
    int main()
    {
     int a[100];
     int n,temp,i,j;
     printf("Enter n:");
     scanf("%d",&n);
     printf("Enter %d integer:",n);
     for(i=0;i<n;i++)
     scanf("%d",&a[i]);
     
     for(i=1;i<n;i++){
        for(j=0;j<n-i;j++)
        {
        if(a[j]>a[j+1])
        {
         temp=a[j];
         a[j]=a[j+1];
         a[j+1]=temp;
        }
     }
     }
        printf("After sorted:");
        for(i=0;i<n;i++)
        printf("%4d",a[i]);
        printf("\n");
        
        return 0;
    }
    /*输出示例:
    Enter n:8
    Enter 8 integer:1 5 5 82 45 95 15 43
    After sorted:  1  5  5 15 43 45 82 95
    请按任意键继续. . .

    Enter n:10
    Enter 10 integer:25 1 52 69 5 96 -77 59 123 -960
    After sorted: -960  -77    1    5   25   52   59   69   96  123
    请按任意键继续. . .
     
    */

    2.算法改进(如果某一趟排序数据没有发生交换,说明序列当前已经是排好序了)。

    #include<stdio.h>
    int main()
    {
        int a[10];
        int i,j,tem;
        bool bchange = false;
        printf("Please input 10 numbers:\n");
        for(i = 0;i<10;i++)
        {
            scanf("%d",&a[i]);
        }
        //Bubble
        for(i=0;i<9;i++)
        {
            for(j=0;j<9-i;j++)
            {
                bchange = false;
                if(a[j]>a[j+1])
                {
                    tem = a[j];
                    a[j] = a[j+1];
                    a[j+1] = tem;
                    bchange = true;
                }
            }
            if(!bchange)//not change
            break;
        }
        printf("The sorted numbers:\n");
        for(i = 0;i<10;i++)
        {
            printf("%3d",a[i]);        
        }
            printf("\n");
            return 0;

    } 

  • 相关阅读:
    黑盒测试方法用例设计详解
    跨域
    HTTP Referer
    Java抽象类和接口
    深入理解Java垃圾回收机制
    Java异常处理机制
    hash
    JUint4的下载、配置及对一个算法编写单元测试用例(测试多组数据每组多个参数)
    get和post的区别
    Mac 文档阅读软件Dash软件破解版
  • 原文地址:https://www.cnblogs.com/lanshy/p/2978240.html
Copyright © 2011-2022 走看看