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

冒泡排序

时间:2022-12-23 18:03:02浏览次数:38  
标签:int 冒泡排序 冒泡 操作 排序 public

  冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。

  我用一个例子,带你看下冒泡排序的整个过程。我们要对一组数据 4,5,6,3,2,1,从小到大进行排序。第一次冒泡操作的详细过程就是这样:

 

可以看出,经过一次冒泡操作之后,6 这个元素已经存储在正确的位置上。要想完成所有数据的排序,我们只要进行 6 次这样的冒泡操作就行了。

 

 实际上,刚讲的冒泡过程还可以优化。当某次冒泡操作已经没有数据交换时,说明已经达到完全有序,不用再继续执行后续的冒泡操作。我这里还有另外一个例子,这里面给 6 个元素排序,只需要 4 次冒泡操作就可以了。

 

 

冒泡排序算法的原理比较容易理解,具体的代码我贴到下面,你可以结合着代码来看我前面讲的原理。

public class Test {
    public static void main(String[] args) {
        int [] a = {5,3,6,2,7,8,1,9};
        bubbleSort(a,8);
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }

    public static  void bubbleSort(int[] a,int n){

        if(n <=1) return;
        for (int i = 0; i < n; i++) {
            //提交退出冒泡排序的标志位;
            boolean flag = false;
            for (int j = 0; j < n-i-1; j++) {
                //比较,交换
                if(a[j] > a[j+1]){
                    int tmp = a[j];
                    a[j]=a[j+1];
                    a[j+1]=tmp;
                    //表示数据有交换
                    flag = true;
                }
            }
            if(!flag){
                //没有数据交换,提前退出
                break;
            }
        }
    }
}

执行结果:

 

标签:int,冒泡排序,冒泡,操作,排序,public
From: https://www.cnblogs.com/kdx-2/p/17001256.html

相关文章

  • Day26.1.冒泡排序
    Day26.1.冒泡排序1.内容两层循环,外层冒泡轮数,内层依次比较,时间复杂度O(n2),{实际为(n-1)*n/2},(具体参考数据结构)相邻的数比较一轮确定一个数的位置最后一个数......
  • JavaScript冒泡排序+Vue可视化冒泡动画
    冒泡排序(BubbleSort)算是前端最简单的算法,也是最经典的排序算法了。网上JavaScript版本的冒泡排序很多,今天用Vue实现一个动态的可视化冒泡排序。01、JavaScript冒泡排序......
  • 冒泡排序相关知识总结
    轮数表示冒泡排序外层循环的次数,次数表示交换次数。设排列为\(w\),冒泡排序的轮数为\(\max_{i=1}^{n}(i-w_i)\).因为如果\(i>w_i\),那么这个数每一轮会向目的地......
  • 交换排序(冒泡排序和快速排序)
    学习时间2022.12.13交换排序基本概念冒泡排序基本概念来自菜鸟教程冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如......
  • Go-冒泡排序
    packagemainimport"fmt"//11,9,2,8,3,7,4,6,5,10//911283746510//921183746510//928113746510//928311746510//9283......
  • 冒泡排序
    staticint[]Bubble(int[]a){intswap;if(a.length==0)returnnull;for(inti=1;i<a.length;i++/*i是后面数的下标*/){for(intj=0;j<i;j++/......
  • 冒泡排序
    冒泡排序QList<int>Qt_2022121201::sortList(QList<int>list_param){for(intk=0;k<list_param.size()-1;k++){for(intj=0;j<list......
  • C语言 (数据结构)在顺序表中用二分查找和冒泡排序算法
    main.c:#include<stdio.h>#include<stdlib.h>#include"SequenceList.h"intmain(){//创建顺序表和指针SequenceListSL,*P_SL;intchoice=0;......
  • 冒泡排序
    voidbubble_sort(intarr[],intn){ inti,j,tmp; for(i=0;i<n;i++) { intflag=1; for(j=0;j<n-1-i;j++)//n个元素,两两对比, //只需要进行n-1次......
  • 冒泡排序
    冒泡排序图解代码实现packagecom.wiselee.sort;importjava.util.Arrays;/***@PROJECT_NAME:DataStruct*@DESCRIPTION:*@USER:28416*@DATE:2022/......