Java冒泡排序实现数组排列

原理:比较数组相邻的两个数,较大的交换至右端(或左端)。

例如:将数组 int[ ] arr = {5,3,8,7,2} 从小到大排序。

思路:依次比较数组中相邻的两个数,小数放在前面,大数放在右面,即第一次遍历:将第1个数和第2个数比较,大数放在后面,小数放在前面。然后第2个数和第3个数比较,大数放后面,小数放在前面,依次进行下去直至排列完成。一次遍历会将数组内最大数排列至最后,第二次遍历排列除最后一项即可,即进行arr.length-1次遍历即可完成排序。

第一次遍历:

        5和3比较:5>3,交换位置。int[ ] arr = {3,5,8,7,2}.
        5和8比较:5<3,不交换位置。int[ ] arr = {3,5,8,7,2}.
        8和7比较:8>7,交换位置。int[ ] arr = {3,5,7,8,2}.
        8和2比较:8>2,交换位置。int[ ] arr = {3,5,7,2,8}.

第二次遍历:

      3和5比较:3<5,不交换位置。int[ ] arr = {3,5,7,2,8}.
      5和7比较:5<7,不交换位置。int[ ] arr = {3,5,7,2,8}.
      7和2比较:7>2,交换位置。int[ ] arr = {3,5,2,7,8}.

第三次遍历:

     3和5比较:3<5,不交换位置。int[ ] arr = {3,5,2,7,8}.
     5和2比较:5>2,交换位置。int[ ] arr = {3,2,5,7,8}.

第四次遍历:

    3和2比较:3>2,交换位置。int[ ] arr = {2,3,5,7,8}.

Java代码实现如下:

public static void main(String[] args) {
  	int[ ] arr = {5,3,8,7,2};
  	int temp=0;//用于存放比较数第一个数的值
  	for(int i=0;i<arr.length-1;i++) {//外循环次数:总共遍历多少次
  		for(int j=0;j<arr.length-1-i;j++) {//内循环次数:比较多少次
  			if(arr[j]>arr[j+1]) {
  				temp=arr[j];
  				arr[j]=arr[j+1];
  				arr[j+1]=temp;
  		}
  		}
  	}
  	for(int num:arr) {
  		System.out.print(num+" ");
  	}
  }
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 1/29 页 1 跟我学 Java 面向对象程序设计技术及应用——应用冒泡排序算法实 现数组元素排序的 Java 程序实现示例 1.1 什么是冒泡排序算法 1.1.1 什么是冒泡排序算法 对于什么是冒泡排序算法(Bubble Sort),读者可以查询百科。在百科中的定义如下(如 下示图显示具体的定义):它重复地走访过要排序的元素列,依次比较两个相邻的元素,如 果顺序(如从大到小、首字母从 Z 到 A)错误就把他们交换过来。走访元素的工作是重复地 进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 经过这样的排序后,最后的元素应该会是最大的数(当然,也可能是最小的数,取决于 数据的排序格则和要求)。因此,一批数据中的较小元素会经由这样的"排序交换"慢慢"浮 (冒泡)"到这批数据的顶端(升序或降序排列) ——此排序算法由此得名。 1.1.2 冒泡排序算法实现原理 比较两个相邻的元素,将值大的元素交换至右端。对每一对相邻的元素都完成同样的比 较工作直到最后一对,针对所有的元素都重复以上的步骤,除了最后一个元素,直到没有任 何一对数字需要进行比较为止。 因此,在程序设计实现方面,则要运用双层嵌套循环进行冒泡排序编程实现。 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 2/29 页 2 1.1.3 冒泡排序算法的主要特性 -- 算法稳定性 冒泡排序其实就是把一批数据中比较小的元素往前调或者把大的元素往后调,而比较是 相邻的两个元素进行比较,数据交换也只发生在这两个元素之间——两两比较、两两交换。 但如果相邻的两个元素值相等,则不会再进行交换的(减少了交换的次数)。而如果两 个元素的值相等、但元素在位置上并没有相邻,那么即使通过前面的两两交换把两个元素相 邻起来,这时候也不会对它们进行交换。所以相同元素值的两个元素的前后顺序在此算法中 并没有被改变,故冒泡排序是一种稳定排序算法。 1.2 应用冒泡排序算法实现数组元素排序的 Java 程序实现示例 1.2.1 在 MyEclipse 开发工具中创建 Java 工程项目 1、启动 MyEclipse 开发工具,并选择 Java Project 工程项目 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 3/29 页 3 2、在工程项目创建的对话框中输入项目名称 JavaDemo,并选择项目存放的目录路径 3、点击对话框中的完成(Finish)按钮,将创建出一个空的 Java 应用程序项目 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 4/29 页 4 1.2.2 在创建的 Java 应用程序项目中添加示例程序类 1、 右击所创建的 Java 应用程序项目名称 JavaDemo, 在弹出的快捷菜单中选择 New 新建一个 Java 程序类 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 5/29 页 5 2、在类创建的对话框中输入包名称为 com.bluedream.demo,类名称为 JavaBubbleSort,并选 择需要在 JavaBubbleSort 类中创建出 main()方法 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 6/29 页 6 3、点击对话框中的完成(Finish)按钮,将创建出一个空的 Java 程序类,在该类中自动地包 含有 main()方法 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 7/29 页 7 4、编程示例中的功能实现的程序代码 在该 Java 程序中,定义待排序的数组(目前数组中的各个元素是预先定义的,后续可以 由用户输入),然后对该数组中的各个元素值应用冒泡排序算法实现排序,并打印出排序前 和排序后的数组中的各个元素值,以方便进行对比。 (1)程序代码示例 在程序设计实现方面主要是应用双层嵌套 for 循环进行冒泡排序编程实现, 参考下面示例 代码中的嵌套 for 循环的实现代码。 package com.bluedream.demo; public class JavaBubbleSort { public static void main(String[] args) { /** * 定义存储待排序的数组 */ int[] someOneArray; /** * 定义一个变量,用来存储临时的数据 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值