首页
学习
活动
专区
工具
TVP
发布

java语言:详细讲解如何实现冒泡排序

什么是冒泡排序?

冒泡排序是n个数排序,将相邻两个数依次进行比较,将小数调在前面,大数放在后面,这样逐次比较,直至将最大的数移至最后;然后再将n-1个数继续比较,重复上面操作,直至比较完毕。

工具/原料

我使用Eclipse实现程序的功能

方法/步骤

实现构思:n个数进行从小到大排序,外循环第一次循环控制参加比较的次数为n-1,内循环找出n个数的最大值,移放在最后位置上;以后每次循环中其循环次数和参加比较的数依次减1.若n=0,即对6个数进行排序,排序过程序如下面的描述。

假设数组a中存放,在第一趟排序中:

第1次 a[0]和a[1]比软,即3和7比较,不交换 4 8 6 7 9 1;

第2次 a[1]和a[2]比软,即7和5比较,交换 4 6 8 7 9 1;

第3次 a[2]和a[3]比软,即7和6比较,交换 4 6 8 7 9 1;

第1次 a[3]和a[4]比软,即7和8比较,不交换 4 6 8 7 9 1;

第1次 a[4]和a[5]比软,即3和7比较,交换 4 6 8 7 9 1;

第一趟排序中,6个数比较了5次,把6个数中的最大值数8排在最后。数组中数据为:

第二趟排序:

第1次 a[0]和a[1]比软,即3和5比较,不交换 4 6 7 8 1 9;

第2次 a[1]和a[2]比软,即5和6比较,不交换 4 6 7 8 1 9;

第3次 a[2]和a[3]比软,即6和7比较,不交换 4 6 7 8 1 9;

第1次 a[3]和a[4]比软,即7和0比较,交换 4 6 7 1 8 9;

在第二趟排序中,最大数8不用参加比较,其余的5个数比较了4次,把期中的最大数7排在最后,排出;

以此类推:

第三趟比较3次,排出

第四趟比较2次,排出

第五趟比较1次,排出

最后还剩下1个数1,不需要再比,得到排序结果:

打开Eclipse,新建一个类,选择好源文件的保存位置和所要存放的包。

声明数组arr并存放6个元素.

利用for循环的嵌套解决问题。由之前的算法分析,可以看出对6个数据的数组升序排列只需进行5趟排序。所以外层循环控制排序趟数。

外层循环

内层循环控制每一趟排序的次数,并找出最大的数,放在最后位置(即沉底)。

内层循环

下面是源代码,方便大家参考。

import java.util.Arrays;

public class aadadasda {

public static void main(String[] args){

int[] arr=;

System.out.println("排序前数组为:");

for(int num:arr)

System.out.println("");

System.out.println("-----------------冒泡排序开始----------------");

for(int i=0;i

for(int j=0;j

if(arr[j]>arr[j+1]){

int temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

System.out.println("-----------------冒泡排序结束---------------");

System.out.println("排序后的数组为:");

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

}

}

打印出来的结果如图。

结果

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190817A055XK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券