Java冒泡排序

冒泡排序

	概念:
	通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,
	若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。

思路:

  1. 化繁为简
  • 对这个数组长度为7的数组进行6轮排序
  • 每轮将最大的数排在后面(第一轮将最大数排在最后;第二轮将第二大的数放在倒数第2(倒数第2则需要循环次数比上次少1);…)
  • 每轮写成一个内循环
  • 循环的轮数写成一个外循环

代码:

		int array[] = {10,15,58,9,95,70,1};
		System.out.println("原数组为:");
		for(int i=0; i<array.length; i++){
			System.out.print(array[i] + "  ");
		}
		//先写外循环,用j
		int tem = 0;
		for(int j = 0; j < 6; j++){//内循环次数用array.length-1-i表示因为这次循环找到大数后下次循环次数总要-1
				if(array[j] > array[j+1]){//判断邻近元素大小
					tem = array[j];
					array[j] = array[j+1];
					array[j+1] = tem;
				}
			}
			System.out.println("\n第1轮循环后数组为:");
			for(int k=0; k<array.length; k++){
				System.out.print(array[k] + "  ");
			}

运行结果:
在这里插入图片描述

  1. 先死后活
  • 同理补充外循环,控制循环轮数
  • 外循环轮数可以利用array.length表示出来,这样直接添加数组元素代码也可以实现新的排序

代码:

		int array[] = {10,15,58,9,95,70,1};
		System.out.println("原数组为:");
		for(int i=0; i<array.length; i++){
			System.out.print(array[i] + "  ");
		}
		//冒泡排序
		int tem = 0;
		for(int i = 0; i < array.length-1; i++){
			for(int j = 0; j < array.length-1-i; j++){//内循环次数用array.length-1-i表示因为这次循环找到大数后下次循环次数总要-1
				if(array[j] > array[j+1]){//判断邻近元素大小
					tem = array[j];
					array[j] = array[j+1];
					array[j+1] = tem;
				}
			}
			System.out.println("\n第"+ (i+1) +"轮循环后数组为:");
			for(int k=0; k<array.length; k++){
				System.out.print(array[k] + "  ");
			}
		}

运行结果:
在这里插入图片描述
其实冒泡排序并不难,就如同它的概念一样,就是逐个的把大的数利用循环依次放在后面,思想都是通用的,理解了概念和思想以后换成其他语言也一样可以写出来的。

要是有小伙伴想直接运行试试看的可以根据全代码直接运行试试
全代码:

public class BubbleSort{
	public static void main(String[] args){
		/*:冒泡排序
		通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,
		若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。
		*/
		int array[] = {10,15,58,9,95,70,1,81,-1,-11,55};
		System.out.println("原数组为:");
		for(int i=0; i<array.length; i++){
			System.out.print(array[i] + "  ");
		}
		//思路:
		//1.对这个数组长度为array.length的数组进行array.length-1轮排序
		//2.每轮将最大的数排在后面(第一轮将最大数排在最后;第二轮将第二大的数放在倒数第2(倒数第2则需要循环次数比上次少1);....)
		//3.每轮写成一个内循环
		//4.循环的轮数写成一个外循环
		//5.外循环轮数可以利用array.length表示出来,这样直接添加数组元素代码也可以实现新的排序
		int tem = 0;
		for(int i = 0; i < array.length-1; i++){
			for(int j = 0; j < array.length-1-i; j++){//内循环次数用array.length-1-i表示因为这次循环找到大数后下次循环次数总要-1
				if(array[j] > array[j+1]){//判断邻近元素大小
					tem = array[j];
					array[j] = array[j+1];
					array[j+1] = tem;
				}
			}
			System.out.println("\n第"+ (i+1) +"轮循环后数组为:");
			for(int k=0; k<array.length; k++){
				System.out.print(array[k] + "  ");
			}
		}
		
	}
}

文件名:BubbleSort.java
这里我添加了几组数据,不出意外运行结果应该就是下面的画面了
运行结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值