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

冒泡排序

时间:2022-12-02 20:11:50浏览次数:31  
标签:arr int 元素 冒泡排序 flag 排序

本文主要介绍冒泡排序

int[] arr = {10,23,1,34,22};

图解冒泡排序过程

由此得出

总的排序趟数是数组元素个数-1(最后一个元素无需进行排序),每趟排序过程中进行比较次数是数组元素个数-当前趟数。

原因:第一趟排序,未确定顺序的元素个数是5,比较次数是5-1;第二趟排序,未确定顺序的元素个数是4,比较次数是4-1。依次类推,第 i 趟排序,比较次数是5 - i 。

此外,当进行第3趟排序时,所有元素已经有序,因此无需进行下一趟排序,可以设置变量flag,标志每趟排序过程中是否出现逆序,如果没有,则排序完成,否则继续进行排序。

代码如下图所示:

public class BubbleSort {
    public void BubbleSorts(int[] arr) {
        boolean flag = true;
        for(int i =0 ;i< arr.length - 1;i++) {
            for(int j = 1;j< arr.length-i;j++) {
                if(arr[j-1] > arr[j]) {
                    flag = false;
                    int temp = arr[j-1];
                    arr[j-1] = arr[j];
                    arr[j] = temp;
                }
            }
            if(flag) {
                break;
            }
        }
    }
    
    public static void main(String[] args) {
        // 冒泡排序
        int[] arr = {10,23,1,34,22};
        BubbleSort bubbleSort = new BubbleSort();
        bubbleSort.BubbleSorts(arr);
        for(int i =0;i<arr.length;i++) {
            System.out.print(arr[i]+ " ");
        }
        
    }

}

 

标签:arr,int,元素,冒泡排序,flag,排序
From: https://www.cnblogs.com/zwgitOne123/p/16945515.html

相关文章

  • 冒泡排序
    冒泡排序是一种交换排序#include<iostream>usingnamespacestd;voidbubble_sort(inta[],intn){for(inti=0;i<n;i++){//外循环,趟数//内循环/......
  • 利用Python手把手带上实现冒泡排序
    前言之前写过一篇关于Python算法分析的文章--《​​利用Python浅尝算法分析​​》,想要学好计算机,数据结构和算法几乎是无法回避的课题,因为我们学习编程第一节课老师都会......
  • 冒泡排序、快速排序
    冒泡排序、快速排序都属于交换排序,快速排序对冒泡排序优化。冒泡排序 (1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较......
  • 6分钟彻底掌握冒泡排序
    冒泡排序原理    冒泡排序(BubbleSort),重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作......
  • P6186 [NOI Online #1 提高组] 冒泡排序
    随便给出一组数据:53124初始逆序对数量:\(6\)。冒泡排序一轮:31245\(6-4=2\)。两轮:12345\(2-2=0\)。观察会发现,数\(x\)会一直后退,直到有一个大于\(......
  • luogu P8500 [NOI2022] 冒泡排序
    题面传送门这个部分分提示得太妙了。首先这个冒泡排序的壳已经被套烂了,就是对逆序对计数。首先观察一下,发现第一个样例解释中在等于某个限制对应的最小值的时候取到逆序......
  • luogu P8859 冒泡排序
    题面传送门首先\(type=1\)的情况是平凡的,设可以发现一个数不需要被操作当且仅当这个数前面的数都小于这个数。可以设计出这样的dp:设\(f_{i,j}\)表示到了第\(i\)个数,前面有......
  • C语言之冒泡排序
    #include<stdio.h>voidbubble_sort(intarr[],intsz){//确定冒泡排序的趟数inti=0;for(i=0;i<sz-1;i++){intflag=1;//假设这一趟冒泡排序已经有......
  • 数组部分基础&冒泡排序
    数组基础知识 1.数组的创建格式:变量(数组)类型变量(数组)名=变量(数组)值int[]nums;//声明一个数组nums=newint[10];//创建一个数组int[]nums=new......
  • 冒泡排序法
    voidBubbleSort(ints[],intn){//函数参数:数组与数组大小 inti,j,temp; for(i=0;i<n-1;i++)//从0开始进行n-1轮排序 {......