Java数组,冒泡排序

冒泡排序:
需求:数组中存储多个学生分数,按照分数从低到高的顺序排序

步骤:1:两两做大于比较,大的往后移,小的往前移,把最大的值找出来,放在倒数第1位
这个时候,我们数组划分为2部分,排好序是一部分,未排序的是一部分
2:两两做大于比较,大的往后移,小的往前移,把第二大的值找出来,放在倒数第2位
这个时候,我们数组划分为2部分,排好序是一部分,未排序的是一部分
3:依次类推,直到把所有的数字都按照从小到大的顺序,排列

冒泡优化
1:把中间变量从小循环的里面,拿出来放在最大循环的外面声明,可以减少声明次数:
2:每排序出一个元素后,后面的排序,就可以减少一次
第1大的数 排序7 次
第2大的数 排序6 次
第3大的数 排序5次
以此类推
第8大数 排序0次
3:针对数组本身就是有序的
常见的数组排序
1:冒泡排序
2:插入排序
3:选择排序
4:快速排序(sort()排序)

public static void main(String[] args) {
	
	int[] s = {100,56,88,99,47,65,12,10} ;//原数组 乱序
	//int[] s = {1,2,3,4,5,6,7,8} ;//原数组 乱序
	int count = 0;
	int temp = 0; //中间变量,存放需要交换元素的变量
	
	//外层循环控制元素的排序次数
	for(int j=1;j<s.length;j++){
		boolean flag = true;  //表示假如数组是有序的
		//里层循环控制元素的交换次数,交换次数呈递减规律
		for(int i = 0;i<s.length-j;i++){
			count++;
			//如果前一个元素比后一个元素大
			if(s[i]>s[i+1]){
				
				//如果第一个元素比第二个元素大,交换位置
				temp = s[i];
				s[i] = s[i+1];
				s[i+1] = temp;
				flag = false; //给数组一个标记
				
			}
		}
		//如果flag还为true,代表这个数组本身就是有序的
		if(flag){
			//后面的循环就不需要了
			break;
		}
		
	}
	System.out.println(count);
	System.out.println(Arrays.toString(s));

//优化前代码:

if(s[0]>s[1]){
		//如果第一个元素比第二个元素大,交换位置
		int temp = 0;
		temp = s[0];
		s[0] = s[1];
		s[1] = temp;
	}
	if(s[1]>s[2]){
		//如果第一个元素比第二个元素大,交换位置
		int temp = 0;
		temp = s[1];
		s[1] = s[2];
		s[2] = temp;
	}
	if(s[2]>s[3]){
		//如果第一个元素比第二个元素大,交换位置
		int temp = 0;
		temp = s[2];
		s[2] = s[3];
		s[3] = temp;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值