zoukankan      html  css  js  c++  java
  • 数据结构 排序(冒泡排序升级版)

    //排序--冒泡排序法升级版
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<time.h>
    
    /*
    冒泡排序:
    冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
    它重复地走访过要排序的数列,一次比较相邻的两个元素,如果他们的顺序错误就把他们交换过来。
    走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
    
    */
    
    //冒泡法排序
    void BubbleSort(int * arr, int num){
        if (arr == NULL)
        {
            printf("传入参数不可以为空!
    ");
            return;
        }
        int i = 0, j = 0, exchange = 1, temp = 0;
        /*
          升级版的精华所在,增加exchange变量
          普通的冒泡排序需要遍历n轮,但是有可能n-1轮时候就已经排序完成了(部分数据本来有序),但是程序仍然会执行
    
          升级版增加exchange变量,当判断在一轮排序中,任何2个元素都没有交换位置 说明该数组已经有序
        */
        for (i = 0; i < num&& exchange; i++)
        {
            exchange = 0;
            for (j = 0; (j<num - i - 1) ; j++)
            {
                if (arr[j]>arr[j+1])
                {
                    //交换位置
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    exchange = 1;
                }
            }
        }
    }
    
    //打印数组
    void Print(int * arr, int num){
        if (arr == NULL)
        {
            printf("传入参数不可以为空!
    ");
            return;
        }
        int i = 0;
        for (int i = 0; i < num; i++)
        {
            printf("%5d", *(arr + i));
        }
        printf("
    ");
    }
    
    void Test(){
        int i = 0;
        int arr[10] = { 0 };
        //定义时间类型变量
        time_t ts;
        //生成随机数种子
        srand((unsigned int)time(&ts));
        for (i = 0; i < 10; i++)
        {
            arr[i] = (int)(rand() % 100);
        }
        //打印数组
        printf("
    原始数据----
    ");
        Print(arr, 10);
        //冒泡法排序
        printf("冒泡法排序之后的数据
    ");
        BubbleSort(arr, 10);
        Print(arr, 10);
    }
    
    void main(){
        Test();
        system("pause");
    }

  • 相关阅读:
    创建分区表(按照年份分区,自动新增分区)
    flash rock me
    苹果有虫才好吃
    Evolutility改造支持oracle
    Nhibernate问题三则
    Html5+razor+jqmobile尝鲜
    配置Instantclient
    T4,Redmine,Nhibernate etc
    monotouch开发ios应用手记
    大文件及文件夹上传(续)
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5741323.html
Copyright © 2011-2022 走看看