zoukankan      html  css  js  c++  java
  • demo001.冒泡排序

    /**
     * 冒泡排序:C 语言
     *
     */
    #include <stdio.h>
    
    // 数组长度
    #define LENGTH(array) ( (sizeof(array)) / (sizeof(array[0])) )
    // 交互数值
    #define swap(a,b)    (a^=b,b^=a,a^=b)
    
    /*
     * 冒泡排序
     *
     * 参数说明:
     *     a -- 待排序的数组
     *     n -- 数组的长度
     */
    //经典冒泡排序
    void sort_bubble(int* a,int len)
    {
     int i, j;
     int temp;
     for (i = 0; i < len - 1; i++)
     {
      for (j = 0; j < len - 1 - i; j++)
      {
       if (a[j] > a[j + 1])
       {
        temp = a[j];
        a[j] = a[j + 1];
        a[j + 1] = temp;
       }
      }
     }
    }
    //冒泡排序C实现二
    //观察上面冒泡排序的流程图,第3趟排序之后,数据已经是有序的了;第4趟和第5趟并没有进行数据交换。
    //下面我们对冒泡排序进行优化,使它效率更高一些:添加一个标记,如果一趟遍历中发生了交换,则标记为true,否则为false。如果某一趟没有发生交换,说明排序已经完成!
    void sort_bubble_1(int* a, int len)
    {
     int i, j;
     int temp;
     int flag;
     for (i = 0; i < len - 1; i++)
     {
      for (j = 0; j < len - 1 - i; j++)
      {
       flag = 0;
       if (a[j] > a[j + 1])
       {
        temp = a[j];
        a[j] = a[j + 1];
        a[j + 1] = temp;
        flag = 1;
       } 
      }
      if (!flag)
       break;
     }
    }
    void main()
    {
        int i;
        int a[] = {20,40,30,10,60,50};
        int ilen = LENGTH(a);
    
        printf("before sort:");
        for (i=0; i<ilen; i++)
            printf("%d ", a[i]);
        printf("
    ");
    
        sort_bubble_1(a, ilen);
        //sort_bubble(a, ilen);
    
        printf("after  sort:");
        for (i=0; i<ilen; i++)
            printf("%d ", a[i]);
        printf("
    ");
    }

     出处:http://www.cnblogs.com/skywang12345/p/3596232.html

  • 相关阅读:
    JAVA(五)反射机制/Annotation
    JAVA(四)类集/枚举
    JAVA(三)JAVA常用类库/JAVA IO
    JAVA(二)异常/包及访问权限/多线程/泛型
    JAVA(一)JAVA基础/面向对象基础/高级面向对象
    【Android】Android输入子系统
    【Linux】深入理解Linux中内存管理
    【XMPP】基于XMPP的即时通讯解决方案
    cf593d
    cf593c
  • 原文地址:https://www.cnblogs.com/freyluo/p/11171265.html
Copyright © 2011-2022 走看看