首页 > 其他分享 >冒泡排序

冒泡排序

时间:2024-08-01 20:29:52浏览次数:8  
标签:11 13 轮次 arr 冒泡排序 排序

冒泡排序 (Bubble Sort)

冒泡排序是一种简单的交换排序算法。

原理

冒泡排序的每一趟都需要从第一位开始进行相邻的两个数的比较,将较大的数放在后面,比较完毕之后向后挪一位继续比较下面两个相邻的数的大小关系,重复此步骤,直到最后一个还没归位的数。

示例:对数组 [3, 13, 8, 11, 6, 7] 进行升序处理

初始排序

   3→13→8→11→6→7
 ( 0    1    2   3    4   5)

从下标为0的元素3开始排序,相邻的两个数之间比大小:

  • 3比13小,位置不会发生改变
  • 13比8大,13与8交换位置
  • 此时处于下标为2的元素是已经交换位置的13而非8
  • 13比11大,13与11交换位置
  • 13比6大,再次交换位置

由此第一趟遍历结束以后,我们得到下面排序的数组:
3→8→11→6→7 13
( 0 1 2 3 4 5)
经过一次遍历以后,最大的数字13被排序到了最后一个位置。在用同样的方法进行第二趟排序后,我们可以得到以下排序的数组:
3→8→6→7 11 13
( 0 1 2 3 4 5)
第二大的数字被放到了倒数第二个位置。

规律

  1. 每一趟都是把最大的元素放在最后面
  2. 轮次规律:若共有n个元素,最多要比较n-1轮次
  3. 每一轮的比较规律:每一轮比较的次数是上一轮的(-1)次

代码实现

// 至少需要两个变量参与编码,一个变量控制轮次,另一个变量控制轮次中比较的次数
for (int i = 0; i < arr.length; i++) { // 外层for循环控制轮次
    for (int j = 0; j < arr.length - 1 - i; j++) { // 内层for循环控制轮次中比较的次数
        if (arr[j] > arr[j + 1]) {
            int temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}
  

标签:11,13,轮次,arr,冒泡排序,排序
From: https://www.cnblogs.com/Starry-Sea/p/18337417

相关文章

  • 冒泡排序
    特点:每一轮排序是将相邻的两个元素比较大小,最终是一个从小到大或者从大到小的有序序列。规律:1、轮次的规律:总共有n个元素,则需要比较n-1次2、每一轮的比较规律:每一轮的比较规律比上一轮-1次代码实现思想:至少需要两个变量参与编码,一个变量控制轮次,一个变量控制每一轮次中比较的次......
  • 冒泡排序的具体思想和算法实现以及改进
    冒泡排序——稳定算法从小到大排序:0~length-1对比a[0]和a[1],如果前一个大于后一个,交换位置。对比a[1]和a[2],如果前一个大于后一个,交换位置。对比a[2]和a[3],如果前一个大于后一个,交换位置。...对比a[length-2]和a[length-1],如果前一个大于后一个,交换位置。第一轮结果下......
  • 【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
    前言:    接上篇,排序算法除了选择排序(希尔排序)和插入排序(堆排序)之外,还用交换排序(冒泡排序、快速排序)和归并排序已经非比较排序,本篇来深层解析这些排序算法一、交换排序    1.1、冒泡排序    冒泡排序,这个再熟悉不过了,学校中老师讲的第一个排序就......
  • 两种常见排序(冒泡排序和选择排序)详解
    一、冒泡排序1.1、冒泡排序的原理讲解。例如有以下7个数的无序数列储存在数组arr[7]中,现在需要用冒泡排序法来对以下序列进行排序冒泡排序是比较相邻的两个数,如果第一个数比第二个数大,这两个数就要交换两个数的位置,如果第一个数小于第二个数则不用变换位置,例如第一个数3比......
  • 冒泡排序与选择排序
    选择排序:(1)首先通过n-1次比较,从n个数中找出最小的,将它与第一个数交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上。(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换—第二趟选择排序(3)重复上述过程,共经过n-1趟排序后,排序结束排序原......
  • 冒泡排序
    冒泡排序两层循环,外层冒泡轮数,内层依次比较。时间复杂度O(n2),代码量小,效率较低,小数据好用。publicstaticvoidmain(String[]args){int[]ints={1,24,53,42,5};int[]sort=sort(ints);System.out.println(Arrays.toString(sort));}public......
  • 从零开始学Java(超详细韩顺平老师笔记梳理)05——数组(语法,赋值机制,拷贝反转)、排序(冒泡排
    文章目录前言一、数组1.基础语法1)介绍2)使用(动态、静态初始化语法与使用)3)注意事项和细节2.数组赋值机制(ArryAssign)3.数组拷贝4.数组反转(reserve)5.数组的扩容与缩减二、排序三、查找四、二维数组(TwoDimensionalArry)1.快速入门2.使用3.案例:打印一个10行的......
  • 冒泡排序算法
    冒泡排序算法点击查看代码/*冒泡排序,英语:BubbleSort,是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序,如:从大到小、首字母从A到Z。错误就把他们交换过来。*/#include<stdio.h>voidbubble_sort(intarr[],intlen);intmain(){......
  • 【C语言】全面解析冒泡排序
    文章目录什么是冒泡排序?冒泡排序的基本实现代码解释冒泡排序的优化冒泡排序的性能分析冒泡排序的实际应用结论在C语言编程中,排序算法是一个非常基础且重要的概念。冒泡排序作为最简单、最易理解的排序算法之一,广泛应用于各种编程教学和实践中。本文将全面解析C语......
  • java数组之冒泡排序、快速排序
    一、排序算法概述1.算法定义排序:假设含有n个记录的序列为{R1,R2,...,Rn},其相应的关键字序列为{K1,K2,...,Kn}。将这些记录重新排序为{Ri1,Ri2,...,Rin},使得相应的关键字值满足条Ki1<=Ki2<=...<=Kin,这样的一种操作称为排序。通常来说,排序的目的是快速查找。2.衡量排序算......