冒泡排序(普通版+小升级精简版)

图文详解Python冒泡排序算法 本篇文章给大家介绍了关于冒泡排序的相关问题,包括了算法描述、分析、代码实现等等内容,下面一起来看一下,希望对大家有帮助。 阅读详情
冒泡排序:
一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有的数据按要求完成排序。

首先创建一个使用冒泡排序的类。在创建一个主函数

在主函数下面创建一个字符串排序方法,这里是通过StringBuilder创建对象完成

public static String arrayToString(int[] arr) {
        StringBuffer sb =new StringBuffer();
        sb.append("[");
        for (int i = 0; i <arr.length ; i++) {
            if(i==arr.length-1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]).append(",");
            }
        }
        sb.append("]");
        String s =sb.toString();
        return s;
    }

创建主函数Main,在主函数中创建一个数组,将数组进行比较,并调用组合字符串的方法进行输出。

普通版

 public static void main(String[] args) {
        //定义一个数组
        int[] arr = {24, 69, 80, 57, 13, 16, 2};
        System.out.println("原本数组的排列为:" + arrayToString(arr));

        for (int i = 0; i <arr.length-1; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }

        System.out.println("第一次比较后数组的排列为:"+arrayToString(arr));
        for (int i = 0; i <arr.length-2; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        System.out.println("第二次比较后数组的排列为:"+arrayToString(arr));
        for (int i = 0; i <arr.length-3; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        System.out.println("第三次比较后数组的排列为:"+arrayToString(arr));
        for (int i = 0; i <arr.length-4; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        System.out.println("第四次比较后数组的排列为:"+arrayToString(arr));
        for (int i = 0; i <arr.length-5; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        System.out.println("第五次比较后数组的排列为:"+arrayToString(arr));
        for (int i = 0; i <arr.length-6; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        System.out.println("第六次比较后数组的排列为:"+arrayToString(arr));
    }
 }

升级精简版

    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {24, 69, 80, 57, 13, 16, 2};
        System.out.println("原本数组的排列为:" + arrayToString(arr));
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                int t = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = t;
            }
            System.out.println("第"+(i+1)+"次数组的排列为:"+arrayToString(arr));
        }
    }

完整代码普通版(由于数组第一个下标为0,数组最后一个的下标是等于数组长度-1的,所以等于做数组长度-1次比较,也可以理解为n个元素做n-1次比较)

public class MaoPaoList {
    /*冒泡排序:
    一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的
    数据放在后面,依次对所有的数据进行操作,直至所有的数据按要求完成排序。
    */
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {24, 69, 80, 57, 13, 16, 2};
        System.out.println("原本数组的排列为:" + arrayToString(arr));

        for (int i = 0; i <arr.length-1; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }

        System.out.println("第一次比较后数组的排列为:"+arrayToString(arr));
        for (int i = 0; i <arr.length-2; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        System.out.println("第二次比较后数组的排列为:"+arrayToString(arr));
        for (int i = 0; i <arr.length-3; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        System.out.println("第三次比较后数组的排列为:"+arrayToString(arr));
        for (int i = 0; i <arr.length-4; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        System.out.println("第四次比较后数组的排列为:"+arrayToString(arr));
        for (int i = 0; i <arr.length-5; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        System.out.println("第五次比较后数组的排列为:"+arrayToString(arr));
        for (int i = 0; i <arr.length-6; i++) {
            if(arr[i]>arr[i+1]){
                int t =arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        System.out.println("第六次比较后数组的排列为:"+arrayToString(arr));
    }
 }
        
       
    //把数组中的元素按照指定的规则组成一个字符串
    public static String arrayToString(int[] arr) {
        StringBuffer sb =new StringBuffer();
        sb.append("[");
        for (int i = 0; i <arr.length ; i++) {
            if(i==arr.length-1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]).append(",");
            }
        }
        sb.append("]");
        String s =sb.toString();
        return s;
    }

}

完整代码升级精简版(通过双循环进行两两比较)

public class MaoPaoList {
    /*冒泡排序:
    一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的
    数据放在后面,依次对所有的数据进行操作,直至所有的数据按要求完成排序。
    */
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {24, 69, 80, 57, 13, 16, 2};
        System.out.println("原本数组的排列为:" + arrayToString(arr));
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                int t = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = t;
            }
            System.out.println("第"+(i+1)+"次数组的排列为:"+arrayToString(arr));
        }
    }
        
    //把数组中的元素按照指定的规则组成一个字符串
    public static String arrayToString(int[] arr) {
        StringBuffer sb =new StringBuffer();
        sb.append("[");
        for (int i = 0; i <arr.length ; i++) {
            if(i==arr.length-1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]).append(",");
            }
        }
        sb.append("]");
        String s =sb.toString();
        return s;
    }

}

结果

 

冒泡排序(超详细) 1、什么是冒泡排序? 冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。 冒泡排序的原理: 每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第 2 位上的数归位,依次类推下去。如果有 n 个数进行排序,只需将 n-1 个数归位,也就是要进行 n-1 趟操作。 而 “每一趟 ” 都需要从第一位开始进行相邻的两个数的比较,将较大的数放后面,比较完毕之后向后挪一位继续比较下面 阅读详情

相关推荐

关于旋转矩阵的左乘与右乘问题

最近在阅读框架源码时被旋转矩阵左乘右乘绕的云里雾里,故写下一篇记录一下,以防自己不长记性。

菜鸡正在学习 1万+

冒泡排序精简

相邻的数据比较,最大值或者最小值排到最后 1. j 外层循环,从a.length-1开始递减 2. i 内层循环,从0到j-1 3. i循环作用是把一个大值,推到j位置 4. i循环执行过程中,一些较大值,也会向右移动 5. i和i+1位置比较大小,i位置大,两个位置的值交换

qq_72046211的博客 114

从仿真到实践:两级直接耦合放大电路的静态工作点协同调试指南

本文详细解析了两级直接耦合放大电路的静态工作点协同调试方法,从仿真到实践提供系统指南。重点介绍了Rc2电阻调整技巧、集电极电位测量方法及常见问题排查,帮助工程师解决各级静态工作点相互影响的难题,提升模拟电路设计效率。

weixin_29189373的博客 124

冒泡排序(精简版,用于数组的排序)

// 封装函数 function maoPao(arr){ for (var i = 0; i &amp;lt; arr.length - 1; i++) { //1.外层循环决定比较的轮数 for (var j = 0; j &amp;lt; arr.length - 1 - i; j++) { //2.内层循环决定每一轮比较的次数 ...

庚中 369

CANoe SOME/IP实战:从ARXML到VCODM的完整配置与调试

本文详细介绍了使用CANoe进行SOME/IP通信测试的完整流程,从硬件环境准备、ARXML文件处理到VCODM文件配置与调试。通过实战技巧和常见问题解决方案,帮助工程师高效完成从ARXML到VCODM的配置,确保SOME/IP通信的稳定性和可靠性。

weixin_29169899的博客 466

高德地图开放平台Web服务API调用全解析:从申请Key到获取POI数据的完整流程

本文详细解析高德地图开放平台Web服务API的合规使用流程,从开发者账号注册、Key类型选择到POI数据采集方案构建。重点介绍文本搜索接口的三种查询模式及高级筛选技巧,提供配额管理与性能优化方案,并分享商业应用场景实战经验,帮助开发者合法高效获取POI数据。

weixin_26950847的博客 1350

数组冒泡排序算法02(精简版)

/* 冒泡法排序 : sort()原理, 手写冒泡算法:曾经的面试必备技能 核心原理 : 数组中相邻的元素比较大小,然后交换位置 */ /* 1.外层循环 : pk轮数 长度 5 PK4轮 长度length pk length-1轮 */ /* 2.内层循环 j : 每一轮pk次数 i = 0 第一轮 length-1 ...

cxy9999999的博客 1095

树莓派5新手必看:保姆级ibus中文输入法安装与配置全流程(含.bashrc设置避坑)

本文详细介绍了在树莓派5上安装和配置ibus中文输入法的完整流程,包括系统环境准备、ibus框架安装、图形界面配置及常见问题解决方案。通过清晰的步骤说明和避坑指南,帮助新手快速实现中文输入功能,提升开发效率。

weixin_29159441的博客 527

冒泡排序——简单版、优化版、最终版

简单版:简单 优化版:减少每趟次数 最终版:考虑有序,减少趟数 EG:9 8 7 6 5 package com.zhouxj.sort.bubble; import java.util.Arrays; public class BubbleSort1 { public static void main(String[] args) { int[] arr =...

zxjzxj1234的专栏 243

基于STM32设计的电能质量控制系统_353

本项目基于STM32F103RCT6微控制器设计了一套电能质量控制系统,实现了对火焰、烟雾、环境温湿度、电压、电流及功率等多项参数的实时监测与报警。系统通过MQ2烟雾传感器、火焰传感器、SHT30温湿度传感器及电力参数采集模块采集数据,采用高电平触发有源蜂鸣器进行异常报警。采集的数据通过ESP8266无线模块以AP+TCP模式上传至基于Qt开发的手机APP和电脑上位机,实现远程实时监控和历史数据管理。系统配备1.44寸LCD显示屏,实现本地数据显示。软件采用Keil5开发,采用寄存器编程方式,提高系统响应速

253

基于Simulink的PMSM轮毂电机崎岖路面悬架协同控制仿真

本文完成了基于Simulink的PMSM轮毂电机崎岖路面悬架协同控制仿真,实现了:✅ 构建了四轮独立驱动+主动悬架高保真整车模型✅ 实现了Skyhook主动悬架控制✅ 设计了驱动-悬架状态共享与协同决策机制✅ 验证了5 m/s高速下连续颠簸路面稳定通过能力✅ 为高性能移动机器人提供一体化底盘解决方案。

xiaoheshang_123的博客 190

c语言 冒泡排序与简化

冒泡排序适用于以下情况: 1.数组基本有序 2.数据量较小 //**以下为普通冒泡排序,冒泡排序不是最省时间的方法,相当费时间**。 #include"stdio.h" #define maxsize 100 #define keytype int typedef struct { keytype key; }link; void shuchu(link *r,int n) { int i; printf("排序后:\t"); for(i=0;i<n;i++) printf("%d\t"

qq_46234209的博客 483

【unity小技巧】新输入系统InputSystem游戏运行中改键重新绑定控制按键(最全最完美解决方案)

在游戏开发中,控制输入是至关重要的一环。Unity的新输入系统(Input System)为开发者提供了强大的工具来管理和处理用户输入,不仅支持各种平台上的多种输入设备,还能轻松处理复杂的输入操作和映射。本文将深入探讨如何使用Unity的新输入系统重新绑定控制按键,为开发者提供一套全面且完善的解决方案。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7358

冒泡排序升级,再升级

俗话说,面试造火箭🚀,工作拧螺丝🔩。在面试中,算法一定会考,在拧螺丝时却不一定会用,但是排序我相信大家或多或少都会用到。

wuliyouMaozhi的博客 215

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

冒泡排序升级版

转:https://blog.youkuaiyun.com/hcz666/article/details/117810787 1、什么是冒泡排序? 冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数

Silence_Sep的博客 540

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

你是真的“C”——为冒泡排序升级赋能!

详解C语言实现拥有万能比较属性的qsort版冒泡排序及其改良方法~

小梦的博客 1901

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

冒泡排序及升级版鸡尾酒排序

冒泡排序 冒泡排序的英文是bubble sort,它是一种基础的交换排序。 原理简单说就是每一个元素都像气泡一样根据自身大小一个一个的往上升。数组之间的元素两两比较,交换顺序,重复遍历数组直到排好序为止。 最简单的冒泡排序算法实现: public void sort(int[] array) { int count = 0; for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j .

辰景的博客 419

冒泡排序(及其升级版)

/ 满足条件交换元素,//因为我们不知道要排序的类型是什么,所以我们需要求出这个数据的类型大小,便于后续的操作!//compare 函数可以理解成评价标准,就好比接下来的结构体你要怎么排序,是按age的大小,还是名字,还是性别,是倒序,还是顺序。//但问题又来了,我们不知道数据的类型,自然就不知道,一个这样的类型占多少个byte,//int arr[] = { 2,3,5,6,7,2,4,4,72,4,1,3,5 };

bksczm的博客 1039

Java排序1之冒泡排序.

冒泡排序Java

m0_74195366的博客 375

冒泡排序以及冒泡排序的升级版

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,

zhaobo156的博客 570

升级版的冒泡排序Java

(1)当在规定循环次数之内已经排序ok了,却还在比较,比较麻烦,比如: 原来数组:int[] arr={2,4,6,7,1,3,5,9,10}; 排序如下: 循环的结果:2 4 6 1 3 5 7 9 10 循环的结果:2 4 1 3 5 6 7 9 10 循环的结果:2 1 3 4 5 6 7 9 10 循环的结果:1 2...

weixin_52563520的博客 876

【qsort函数使用的介绍及冒泡排序的升级】

介绍了qsort函数,以及对冒泡排序进行了升级。首先qsort函数是一个库函数,是用来排序的库函数,底层采用快速排序的思想。而且它可以排序任何类型的数据返回值:注意:其中cmp是函数指针,cmpare指向的是:排序时,用来比较两个元素的函数。需要使用函数的人自己编写。————《白色风车》

Z15255808023的博客 204

无奈的对冒泡排序进行升级

简单的冒牌排序只能对一中数组的类型进行排序,现在我们用冒泡排序为基础来改造出一个可以对任意数组排序的排序函数! 后面附有实现的源码! 首先我们以qsort函数为例慢慢分析,然后确定我们的排序函数如何增强,第一步我们从它的参数下手,它一共4个参数。 1.第一个参数类型是void*,qsort函数可以用来对任意类型的数组排序,用void *型指针可以直接接收各种类型的数组。 2.int num是数组的个数, 3.int width是指针的步长,后面我会进行解释. 4.int (*)(con

qq_63512251的博客 489

冒泡排序

一、冒泡排序原理 1、把两个相邻的元素两两比较,当一个元素大于右侧相邻的元素时,则交换他们的位置,最后的元素一定是最大的数; 2、当一个元素小于或等于右侧的相邻元素时,位置不变。 3、所有的元素都要重复以上的1、2两个步骤。 二、冒泡排序的时间复杂度 平均的时间复杂度为【】 三、冒泡排序的稳定性 泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两..

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1094

冒泡排序详解

冒泡排序思想:通过下标从小到大开始,依次比较相邻元素,若发现逆序则交换,使较大的元素注解从前往后移。 冒泡排序规则: 1、一共进行数组的大小-1次大的循环 2、每一趟排序的次数在逐渐的减少 3、如果我们发现在某趟排序时,没有发生一次交换,可以几天结束循环; 冒泡排序代码演示: package com.sort; import java.util.Arrays; public class BubbleSort { public static void main(String[] args) {

James____Gosling的博客 244

用Java实现冒泡排序升级版

代码思路 冒泡排序的基本思想是:通过对待排列序列从前到后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前向后移到后面,就像水底的气泡一样往上冒 优化: 因为排序过程中,各元素不断接近自己的位置,如果一趟下来没有比较进行交换,就说明序列有序,因此要在排序过程中设置一个flag判断元素是否进行交换,从而减少不必要的比较。 代码实现 public static void main(String[] args) { boolean falg = false; int[

qq_45739810的博客 254
上一篇: Java环境的安装和配置(Window10)保姆级
下一篇: 字符串中数据排序(从小到大)
肯德基冰淇淋代言人
博客等级 码龄5年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值