昨天做了一道笔试题,实现冒泡排序并且每次中间的排序结果都要以字符串的形式写入文件中。其中,我对冒泡排序做了一些优化,代码如下:
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流的异常处理只做了简单处理,读者课自行完善