【十大排序】深入浅出冒泡排序

简介: 【十大排序】深入浅出冒泡排序

排序系列传递门

1. 冒泡的思想

  • 基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。
  • 直观表达,每一趟遍历,将一个最大的数移到序列末尾。

2. 算法描述

  1. 比较相邻的元素,如果前一个比后一个大,交换之。
  2. 第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
  3. 第二趟将第二大的数移动至倒数第二位
  4. ········因此需要n-1趟

3. 代码实现

public void BubbleSort(int[] nums) {
    for (int i = 0; i < nums.length - 1; i++) {
      for (int j = 0; j < nums.length - 1 - i; j++) {
        if (nums[j] > nums[j + 1]) {
          int temp = nums[j];
          nums[j] = nums[j + 1];
          nums[j + 1] = temp;
        }
      }
    }
  }

4. 复杂度

  • 时间复杂度: O(N^2)
  • 空间复杂度: O(1)
  • 稳定性:稳定


相关文章
|
机器学习/深度学习 算法 搜索推荐
八大排序(二)--------冒泡排序
八大排序(二)--------冒泡排序
40 1
|
6月前
|
存储 搜索推荐 算法
十大排序算法(java实现)(二)
十大排序算法(java实现)(二)
|
7月前
|
搜索推荐 测试技术
【六大排序详解】开篇 :插入排序 与 希尔排序
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 排序存在稳定性,稳定性是评估排序的重要标准。
56 1
|
7月前
|
存储 搜索推荐 算法
十大基础排序算法
十大基础排序算法
|
7月前
|
算法 搜索推荐 程序员
【十大排序】带你深入分析快速排序
【十大排序】带你深入分析快速排序
|
存储 移动开发 算法
十大排序算法
十大排序算法
138 0
|
存储 搜索推荐 算法
图解十大排序算法
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
104 2
|
机器学习/深度学习 存储 搜索推荐
数据结构与算法-八大排序
对于排序的了解一定要理解思想,能够很清楚它的时间复杂度和空间复杂度,稳定性等特性。 稳定的排序有:直接插入排序、冒泡排序、归并排序 不稳定的排序有:希尔排序、选择排序、堆排序、快速排序、计数排序
数据结构与算法-八大排序
|
存储 算法
十大排序之插入排序
十大排序之插入排序
91 0
|
搜索推荐 算法
十大排序算法总结(三)
排序算法中涉及到了两个概念: 原地排序:根据算法对内存的消耗情况,可以将算法分为原地排序和非原地排序,原地排序特指空间复杂度为 O(1) 的排序。 排序算法的稳定性:例如排序一个数组 [1, 5, 3, 7, 4, 9, 5],数组中有两个 5,排序之后是 [1, 3, 4, 5, 5, 7, 9],如果排序之后的两个 5 的前后顺序没有发生变化,那么称这个排序是稳定的,反之则是不稳定的。
220 0
十大排序算法总结(三)