Java冒泡排序

假设有一个数组[6,3,26,33,31,32]

原始方式:

public static void main(String[] args) {

	int[] arr = {6,3,26,33,31,32};
	//第一次
	if(arr[0] > arr[1]){
		int t = arr[0];// t作为临时存放数据的变量
		arr[0] = arr[1];
		arr[1] = t;
	}
	List<Integer> collect1 = Arrays.stream(arr).boxed().collect(Collectors.toList());
	System.out.println("collect1==>"+collect1);
	//第二次
	if(arr[1] > arr[2]){
		int t = arr[1];
		arr[1] = arr[2];
		arr[2] = t;
	}
	List<Integer> collect2 = Arrays.stream(arr).boxed().collect(Collectors.toList());
	System.out.println("collect2==>"+collect2);
	//第三次
	if(arr[2] > arr[3]){
		int t = arr[2];
		arr[2] = arr[3];
		arr[2] = t;
	}
	List<Integer> collect3 = Arrays.stream(arr).boxed().collect(Collectors.toList());
	System.out.println("collect3==>"+collect3);
	//第四次
	if(arr[3] > arr[4]){
		int t = arr[3];
		arr[3] = arr[4];
		arr[4] = t;
	}
	List<Integer> collect4 = Arrays.stream(arr).boxed().collect(Collectors.toList());
	System.out.println("collect4==>"+collect4);
	//第五次
	if(arr[4] > arr[5]){
		int t = arr[4];
		arr[4] = arr[5];
		arr[5] = t;
	}
	List<Integer> collect5 = Arrays.stream(arr).boxed().collect(Collectors.toList());
	System.out.println("collect5==>"+collect5);
}

执行结果:

发现上述方法是在是太繁琐,有多少个数据就需要去执行n-1次,可以用循环来解决

public static void main(String[] args) {

	int[] arr = {6,3,26,33,31,32};
	List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
	System.out.println("没有排序之前的数据==>"+list);

	for (int i = 0; i < arr.length-1; i++) {

		for (int j = 0; j < arr.length -i; j++) {
			if(j < arr.length -1-i){
				if(arr[j] > arr[j+1]) {
					//声明一个变量temp作为中间量去实现交换
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
	}

	List<Integer> list2 = Arrays.stream(arr).boxed().collect(Collectors.toList());
	System.out.println("排序之后的数据==>"+list2);

}

没有排序之前的数据==>[6, 3, 26, 33, 31, 32]
排序之后的数据==>[3, 6, 26, 31, 32, 33]

不过利用好java8新特新的话,排序就更简单了,完全可以一句代码搞定,当然还有其他的排序方式,就不一一列举出来了。

public static void main(String[] args) {
	int[] arr = {6,3,26,33,31,32};
	List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
	System.out.println("没有排序之前的数据==>"+list);

	List<Integer> list2 = list.stream().sorted().collect(Collectors.toList());
	System.out.println("排序之后的数据==>"+list2);

}

没有排序之前的数据==>[6, 3, 26, 33, 31, 32]
排序之后的数据==>[3, 6, 26, 31, 32, 33]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值