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

    1 算法原理
    元素依次两两比较,大的数往后浮出,那么第一趟当n-2与n-1比较后,最大的数即浮到最后一个位置。
    第二趟,当n-3与n-2比较时,第二大的数即浮到倒数第二个位置。
    最后一趟,当0与1向比较的时候,最小的和第二小的数确定。
    冒泡排序时间复杂度为O(n^2),速度比较慢。当数组长度为10万时,就耗时一分钟了。
    冒泡排序是稳定排序,相等的元素,排序之后,相对位置不会变化。
    2 示例代码
    /**
    * @brief - sort an array by bubble sort
    * @param[in, out] array - pointer of the array [not null]
    * @param[in] size - size of the array [>0]
    * @retval 0 - succeed
    * @retval -1 - fail
    */
    int bubble_sort(int *array, int size)
    {
        if ((NULL == array)
            || (size < 1))
        {
            return -1;
        }
        
        if (1 == size)
        {
            return 0;
        }
        
        int i = 0;
        int j = 0;
        int tmp = 0;
      
        // 需要进行size-1趟排序
        // 第一趟需要比较到size -2这个索引位置(即size-2与size-1两个位置比较)
        // 最后一趟需要比较到0索引位置(即0与1两个位置比较)
        for (i = size - 2; i >= 0; --i)
        {
            for (j = 0; j <= i; ++j)
            {
                // 大的往后冒泡
                if (array[j] > array[j + 1])
                {
                    tmp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = tmp;
                }
            }
        }
        
        return 0;
    }
    

      

  • 相关阅读:
    媒体查询漫谈——@media Queries
    JavaScript工具函数集
    什么是BFC、IFC、GFC和FFC
    HTTP与HTTPS的区别
    reflow 和 repaint
    客户端检测
    ajax
    批量删除
    数据访问
    登录主页面代码
  • 原文地址:https://www.cnblogs.com/barrychiao/p/3791972.html
Copyright © 2011-2022 走看看