• c语言: 冒泡排序


    void swap(char* a, char* b)
    {
    	if(a == 0 || b == 0){
    		return;
    	}
    
    	*a = *a ^ *b;
    	*b = *a ^ *b;
    	*a = *a ^ *b;
    }
    
    //假的冒泡排序(沉底排序,不好) char* bub_sort(char* ch, int n) { int i,j; if(ch == 0){ return 0; } for(i = 0; i < n - 1; i++){ for(j = i + 1; j <= n - 1; j++){ if(ch[i] > ch[j]){ swap(ch + i, ch + j); } } } return ch; } //改进后的假的冒泡排序(沉底排序,还是不好)
    char* bub_sort_b(char* ch, int n) { int i,j,m; if(ch == 0){ return 0; } for(i = 0; i < n - 1; i++){ m = i; for(j = i + 1; j <= n - 1; j++){ if(ch[m] > ch[j]){ m = j; } } if(i != m) swap(ch + i, ch + m); } return ch; }

    冒泡排序:

    void BasicBubble(char *myArray, int Length)
    {
        for(int i = 0; i < Length - 1; i++)          //循环的趟数: Length
        {
            for(int j = 0; j < Length - 1 - i; j++)//每趟循环比较的次数: Length - 1 - i
            {
                if( myArray[j] > myArray[j+1] )
                {
                    swap(myArray+j, myArray+j+1);
                }
            }
        }
    }
    
    改进的冒泡排序
    /// 设置一个标志位,当没有交换的时候这个标志位不会变化,那么说明数据已经
    /// 排序好了,就不需要再进行剩余的循环。只有在标志位被重新设置的情况下才会
    /// 进行剩余的循环。
    void ImproveBubble1(char *myArray, int Length)
    {
        bool isSorted = false; 
    
        for(int i = 0; i < Length - 1 && !isSorted; i++)//只有在没有排序的情况下才继续循环
        {
            isSorted = true;                                                      //设定排序标志
            for(int j = 0; j < Length - 1 - i; j++)
            {
                if( myArray[j] > myArray[j+1] )
                {
                    isSorted = false;                                             //如果是没有排序,就重新设定标志
                    swap(&myArray[j], &myArray[j+1]);
                }
            }
        }
    }
    

    引用:

    !  1. http://www.cnblogs.com/dylan_zb/archive/2011/03/29/1999130.html

  • 相关阅读:
    【leetcode】Search a 2D Matrix
    【leetcode】Minimum Path Sum
    LCD1602和LCD12864
    Keil建立第一个ARM工程的步骤
    Keil建立第一个C51工程的步骤
    STM32 GPIO寄存器 IDR ODR BSRR BRR
    STM32F10x_StdPeriph_Driver_3.5.0(中文版).chm的使用
    如何查看stm32固件库版本及MDK和keil uvision的关系
    stm32时钟系统
    stm32f103和s3c2440配置
  • 原文地址:https://www.cnblogs.com/mylinux/p/4630879.html
Copyright © 2020-2023  润新知