zoukankan      html  css  js  c++  java
  • 关于冒泡排序的改进

    1、原始冒泡排序

    /*冒泡排序后的顺序为从小到大*/

    void Bubble_Sort(int *arr,int len)
        {
            int i,j,exchange;
            for(i=0;i<len-1;i++)
               for(j=0;j<len-i-1;j++)
                  if(arr[j] > arr[j+1])
                    {
                        exchange = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = exchange;
                    }
    }

    2、改进的冒泡排序

    /*冒泡排序后的顺序为从小到大*/

    void Bubble_Sort(int *arr,int len)
    {
        int i,j,exchange;
        bool flag = true; //增设标志位,判断是否已经完成排序
        for(i=0; i<len-1 && flag; i++)
           {
                flag = false;
                for(j=0;j<len-i-1;j++)
                   if(arr[j] > arr[j+1])
                     { //如果本趟比较没有数据发生交换,说明排序已经完成
                       //则flag一直为false,从而退出循环,不再进行下一趟的比较
                          exchange = arr[j];
                          arr[j] = arr[j+1];
                          arr[j+1] = exchange;
                          flag = true;
                     }
          }
    }

    3、测试

    #include<stdio.h>
    #include<stdlib.h>

    /*将上面的函数放在这里*/

    int main()
       {
            int num;
            printf("请输入排序的元素的个数:");
            scanf("%d",&num);

            int i;
            int *arr = (int *)malloc(num*sizeof(int));
            printf("请依次输入这%d个元素(必须为整数):",num);
            for(i=0;i<num;i++)
               scanf("%d",arr+i);

            printf("冒泡排序后的顺序:");
            Bubble_Sort(arr,num);
            for(i=0;i<num;i++)
               printf("%d ",arr[i]);
            printf(" ");

            free(arr);
            arr = 0;
            return 0;
    }

  • 相关阅读:
    linux 之 系统监控
    Spring Cloud Eureka 常用配置及说明
    mysql的事务隔离级别
    什么场景中会用到java多线程(转)
    springboot配置druid连接池
    MyBatis标签详解(转)
    关于@JsonSerialize注解的使用方法
    layer绑定回车事件(转)
    php7+apache2.4配置
    Eclipse创建Maven项目不支持el表达式的解决方式
  • 原文地址:https://www.cnblogs.com/wwhai/p/10269284.html
Copyright © 2011-2022 走看看