zoukankan      html  css  js  c++  java
  • 010 排序: 冒泡 选择

    /*
    目录:
       一 冒泡排序   
       二 选择排序
    */

    一 冒泡排序

    void BubbleSort(int *p, int nCount)
    {
        int nOutLoop, nInLoop;
    
        nOutLoop = 0;                    // 外层循环 : 计数变量
        while (nOutLoop < nCount - 1)    // 控制次数 - 外层循环
        {
            nInLoop = 0;                // 每次内层 : 循环开始 - 数组首部
            while (nInLoop < nCount - 1 - nOutLoop)    // 控制次数 : 内层循环 - 比较次数
            {
                if (p[nInLoop] > p[nInLoop + 1])    // 数据比较 : 排序顺序 - 从小到大
                {
                    int nTemp = p[nInLoop];
                    p[nInLoop] = p[nInLoop + 1];
                    p[nInLoop + 1] = nTemp;
                }
                ++nInLoop;
            }
            ++nOutLoop;
        }
    }
    
    
    int main(int argc, char *argv[])
    {
        int nNum[] = {1, -2, 9, 5, 22, -1};
        int nCount = sizeof(nNum) / sizeof(nNum[0]);
        
        BubbleSort(nNum, nCount);
    
        int nLoop = 0;
        while (nLoop < nCount)
        {
            printf("%d ", nNum[nLoop]);
            ++nLoop;
        }
    
        return 0;
    }
    
    /*
    // result
    -2 -1 1 5 9 22
    */

    二 选择排序

    void SelectSort(int *p, int nCount)
    {
        int nOutLoop, nMin, nInLoop;
    
        nOutLoop = 0;
        while (nOutLoop < nCount - 1)
        {
            nMin = nOutLoop;            // 默认最小 : 外层循环 - 数组头部
            nInLoop = nOutLoop + 1;     // 每次内层 : 循环开始 - 默认值最小值+1 
            while (nInLoop < nCount)    // 控制次数 : 内层循环 - 比较次数
            {
                if (p[nMin] > p[nInLoop])    // 数据比较 : 排序顺序 - 从小到大
                {
                    nMin = nInLoop;
                }
                ++nInLoop;
            }
    
            if (nMin != nOutLoop)    // 数据交换 : 最小值 - 数组头部
            {
                int nTemp = p[nMin];
                p[nMin] = p[nOutLoop];
                p[nOutLoop] = nTemp;
            }
    
            ++nOutLoop;
        }
    }
    
    int main(int argc, char *argv[])
    {
        int nNum[] = {1, -2, 9, 5, 22, -1};
    
        int nCount = sizeof(nNum) / sizeof(nNum[0]);
        SelectSort(nNum, nCount);
    
        int nLoop = 0;
        while (nLoop < nCount)
        {
            printf("%d ", nNum[nLoop]);
            ++nLoop;
        }
    
        return 0;
    }
    /*
    // result
    -2 -1 1 5 9 22
    */
    /*
    排序算法 - 算法本身特性决定的
        冒泡排序: 从头开始,放到尾部。
        选择排序: 从头开始,放到头部。
    */
  • 相关阅读:
    DM9000网卡驱动接受数据从中断方式改成NAPI方式小记
    20130317
    c++版本新浪微博sdk库交叉编译
    新年预期小记
    arm+linux嵌入式系统的终端显示中文乱码解决
    记transmission下载sd卡支持不佳问题
    嵌入式linux自动登录
    SevenArmsSeries.Repositories
    Mybatis开启二级缓存(全局缓存)的方法
    Spring学习之动态代理的简单实现
  • 原文地址:https://www.cnblogs.com/huafan/p/11514739.html
Copyright © 2011-2022 走看看