2021-01-22

昨天做了一道笔试题,实现冒泡排序并且每次中间的排序结果都要以字符串的形式写入文件中。其中,我对冒泡排序做了一些优化,代码如下:

public static void getSort(int[] arr, int count) {
		for (int i=0;i<arr.length;i++) {
		    //效率优化处理,如果下一次排排序中,boolean标识没有变化,表示已经排序完成,不需要继续执行循环
			boolean flag = false;
			for (int j = 0; j < arr.length-1-i; j++) {
				if(arr[j]>arr[j+1]) {
					int temp=arr[j+1];
					arr[j+1]=arr[j];
					arr[j]=temp;
					flag = true;
				}
			}
			if (!flag) {
				break;
			} else {
				count++;
				StringBuilder stringBuilder = new StringBuilder();
				for (int a : arr) {
					stringBuilder.append(a);
				}
				BufferedWriter out = null;
				try {
					System.out.println(stringBuilder);
					out = new BufferedWriter(new FileWriter("./aaa.txt", true));// true 表示不覆盖原文本内容
					out.write(stringBuilder.toString());
					out.newLine();// aaa.txt文本换行
				} catch (FileNotFoundException e) {
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}finally {
					if(out!=null) {
						try {
							out.close();
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
				}
			}
		}
		for (int b : arr) {
			System.out.println(b);
		}
		System.out.println("排序次数,可自行删除boolean判断比较效率:" + count);
	}
	//其中i/o流的异常处理只做了简单处理,读者课自行完善
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值