排序算法——冒泡排序

排序算法——冒泡排序

五、冒泡排序

  冒泡排序属于交换排序类。  

void bubbleSort(vector<int> &a)
{
    for (int i = 0; i < a.size() - 1; i++)  //(N-1)趟操作
        for (int j = a.size() - 1; j > i; j--)
        {
                        /* 从小到大排序 */
            if (a[j] < a[j - 1])
                std::swap(a[j], a[j - 1]);
                       
            /** 
             * 从大到小排序 
            if (a[j] > a[j - 1])
                std::swap(a[j], a[j - 1]);
             */
        }
}                

思路:

  重的沉底,轻的上浮(增序)。每次比较两个相邻的元素,如果它们顺序错误就交换过来。

步骤:

  每一趟将一个数归位。

  从第一位开始,进行相邻两数的比较,较小的放在后面;

  比较完后向后挪一位继续比较下面两个相邻数大小,直到最后一个尚未归位的数。

  已归位的数无需再比较。

     如果有N个数需要排序,只需要将N-1个数归位,即进行N-1趟操作

排序算法——冒泡排序

时间复杂度:

  O(N2)