• 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
    */
    /*
    排序算法 - 算法本身特性决定的
        冒泡排序: 从头开始,放到尾部。
        选择排序: 从头开始,放到头部。
    */
  • 相关阅读:
    [转][Linux/Ubuntu] vi/vim 使用方法讲解
    [转]在Windows中安装Memcached
    memcached可视化客户端工具
    [转]C#操作Memcached帮助类
    [转]Redis和Memcache区别,优缺点对比
    [转]【转】大型高性能ASP.NET系统架构设计
    [转]浅谈命令查询职责分离(CQRS)模式
    element-UI——el-table添加序号
    xss攻击(转)
    vuex原理
  • 原文地址:https://www.cnblogs.com/huafan/p/11514739.html
Copyright © 2020-2023  润新知