知识屋:更实用的电脑技术知识网站
所在位置:首页 > 体育

Java冒泡排序详解(新手也可以看懂的写法)

发表时间:2022-03-26来源:网络

很多人在初学语言的时候会对算法这个地方纠结很长时间,自己研究总是不得要领,本篇文章会为代码初学者详细讲解冒泡算法的思想和过程。

首先说明冒泡排序的思想: 每次排序从第一个开始,数据两两进行比较,如果左边的数据比右边的数据大,则数据进行交换,否则数据位置不变。接着继续比较,直到最大值的数据移动到数组的最后一个位置。

只要了解了思想,就可以很快写出代码。

我用一个长度为6的数组为例`

第一次比较过程如下


简单说明:可以发现经过第一轮的交换最大值已经交换到了最后一个位置,比较次数是5次,比数组长度少一位。并且最大值36已经移动到了最后,下一轮已经不需用参与比较。

第二次比较过程如下:

简单说明:经过第二轮的交换,35已经交换到了第5位,比较次数是4次,比数组长度少2位。并且35下一轮不需用参与比较。

第三次比较如下:


简单说明:经过第三轮的交换,21已经交换到了第4位,比较次数是3次,比数组长度少3位。并且21下一轮不需用参与比较。

第四轮比较如下:


简单说明:经过第四轮的交换,10已经交换到了第三位,比较次数是2次,比数组长度少4位。并且10下一轮不需用参与比较。

第五轮比较如下:


简单说明:经过第五轮的交换,8已经交换到了第2位,比较次数是1次,比数组长度少5位。至此所有排序已经结束。

从上述分析,排序需要两层循环,第一层循环控制比较次数,次二层控制比较的数量,还需要一个判断语句来确定两个数是否需要交换。

下面演示代码:

public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = {35,10,8,36,21,7}; //初始比较五次 for(int x = 0 ; x //第二层控制比较的个数 //判断:两两比较,大的往后放.. if(arr[y] > arr[y+1]){ int temp = arr[y] ; arr[y] = arr[y+1] ; arr[y+1] = temp ; } } } //最后进行遍历 printArray(arr); } //遍历方法 public static void printArray(int[] arr){ System.out.print("[") ; for(int x = 0 ; x System.out.println(arr[x] +"]") ; }else{ System.out.print(arr[x] +", ") ; } } }

运行结果 :

[7, 8, 10, 21, 35, 36]
收藏

知识阅读

精选栏目

热门推荐

  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜