zoukankan      html  css  js  c++  java
  • 算法和数据结构 冒泡排序

    1、时间复杂度:O(N^N)。

    2、算法实现

    2.1)每趟需要把无序区间的最大的数放到尾部,所以最多需要N-1趟;

    2.2)第i趟的无序区间是[0, N-1-i]。

    2.3)无序区间的相邻元素两两比较,满足条件则交换。

    void bubble_sort(std::vector<int> &arr)
    {
        for (int i = 0; i < arr.size() - 1; i++) // N-1趟
        {
            for (int j = 0; j < arr.size() - 1 - i; j++) // 第i趟的无序区间[0, N-1-i]
            {
                if (arr[j] > arr[j+1]) // 相邻元素两两比较,满足条件则交换
                {
    //                int tmp = arr[j];
    //                arr[j] = arr[j+1];
    //                arr[j+1] = tmp;
                    arr[j] = arr[j] ^ arr[j+1];
                    arr[j+1] = arr[j] ^ arr[j+1];
                    arr[j] = arr[j] ^ arr[j+1];
                }
            }
        }
    }
    

    3)冒泡排序稳定,因为排序前后,相等元素的相对位置没有发生改变,具体看实现的判断条件(如果非要变也没问题)。  

  • 相关阅读:
    软考
    十步走-阅读笔记
    软著申请
    十步走-阅读笔记
    基于Ubuntu安装部署ZooKeeper
    基于Ubuntu安装JDK(OPenJDK8)
    Intern Day89
    阿里巴巴Java研发工程师技术一面
    面试
    6_moc.md
  • 原文地址:https://www.cnblogs.com/yangwenhuan/p/12524217.html
Copyright © 2011-2022 走看看