java冒泡排序经典代码_java冒泡排序[通俗易懂]

java冒泡排序经典代码_java冒泡排序[通俗易懂]经典算法——冒泡排序(BubbleSort)一、示例代码(伸手党看这里)1.示例一importjava.util.Arrays;publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){inttemp;/*临时变量,交换数据时使用*/intlength=arr.length;for(intp=length-1…

大家好,又见面了,我是你们的朋友全栈君。

经典算法——冒泡排序(Bubble Sort)

一、示例代码(伸手党看这里)

1.示例一

importjava.util.Arrays;public classBubbleSort {public static void bubbleSort(int[] arr){int temp; /*临时变量,交换数据时使用*/

int length =arr.length;for(int p = length-1; p > 0; p–){ /*需要进行N-1(数组长度减一)趟排序*/

for(int i = 0; i < p; i++){ /* 开始排序 */if(arr[i] > arr[i+1]){//进行位置交换

temp =arr[i];

arr[i]= arr[i+1];

arr[i+1] =temp;}

}

}

}public static voidmain(String[] args) {int[] a = {10, 2, 5, 7, 23, 59, 3};

bubbleSort(a);

System.out.println(Arrays.toString(a));

}

}

当然,上面的代码可以小小的优化一下。

在使用冒泡排序的时候有可能会遇到这样一种情况:某一趟排序从头到尾,数组中的数字都没有发生位置交换。

那么上面这种情况说明了什么呢?说明了在经过上一趟的排序后,整个数组就已经被排好序了。

这么说的话原来计划的N-1趟排序我们是不是可以不用跑满了?是的!

所以可以优化的地方是:在每一趟排序排完后,看一下这一趟有没有发生数字位置

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152139.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【C++】0314算法阿里笔试题「建议收藏」

    【C++】0314算法阿里笔试题「建议收藏」一、题目二、自己的dfs的题解#include<bits/stdc++.h>usingnamespacestd;intres3=INT_MAX;inttransfet(vector<string>&tmp){intsum=0;for(auto&t:tmp){sum+=stoi(t);}returnsum;}voiddfs(stringstr,vector&l

  • windows自动关机命令_windows取消自动关机命令

    windows自动关机命令_windows取消自动关机命令##设置定时关机bat####1.首先在桌面新建一个记事本txt####2.打开记事本,输入shutdown-s-t1260;1260是指1260秒,即21分钟内关机。可以修改成别的时间

  • js正则使用变量_js正则表达式语法大全

    js正则使用变量_js正则表达式语法大全正常有变量evalnewRegExp

  • java并发编程实战_java解决并发问题

    java并发编程实战_java解决并发问题Executors  在Java5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java5中引入的,其内部使用了线程池机制,它在java.util.cocurrent包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好…

  • OpenCV中的width与widthStep

    OpenCV中的width与widthStep1.在opencv中width表示的是图像的每行像素数,widthstep表示的是存储一行像素需要的字节数,位了快速读取数据,在opencv中一般使widthStep为4的倍数,从而实现字节的对齐,有利于提高运算速度。2.函数的原型为image->widthStep=(((image->width*image->nChannels*(image->depth&~IPL_DEPTH_SIGN)+7)/8)+align-1)&(~(alig

  • 安卓短信转发qq邮箱

    安卓短信转发qq邮箱fork一个github项目简介准备工作Tips简介最近不怎么带手机,所以收不到一些验证码什么的,所以想搞一个app放手机上将短信以有邮件的形式发送到指定邮箱,然后用电脑查看邮件,这样就可以不用带手机了。在github上找到一个项目叫sms-backup-plus,于是准备在这个项目的基础上进行更改。准备工作安装androidStudio学习kotlin怎么整合java和k…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号