第三週作業——氣泡排序和歸併排序(執行氣泡排序)
阿新 • • 發佈:2019-02-06
我冒個泡,然後開始排序!
讀入檔案和排序後寫出檔案的氣泡排序。異常處理全都是throws
氣泡排序:
package exercise3; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; public class bubbleSort { private static BufferedReader bufferedreader; public static void main(String[] args) throws IOException{ bufferedreader = new BufferedReader(new InputStreamReader(new FileInputStream(new File("自定義")), "gb2312")); String getData=""; int num=0; List<Integer> list=new ArrayList<Integer>(); while((getData=bufferedreader.readLine())!=null){ num=num+1; list.add(Integer.parseInt(getData.trim())); } Integer[] dataArray=(Integer[])list.toArray(new Integer[num]); long timeStart=System.currentTimeMillis(); bubbleSort(dataArray); long timeEnd=System.currentTimeMillis(); write(dataArray); System.out.println("largeW.txt文字中總共有:"+num+"個數據\n"+"該資料氣泡排序所花費的時間是:\n"+(timeEnd-timeStart)+"毫秒"); } private static void bubbleSort(Integer[] dataArray) throws IOException{ Integer[] arr=(Integer[]) dataArray; for(int i=0;i<arr.length;i++){ for(int j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } } public static void write(Integer[] arr) throws IOException{ System.out.println("排序後的檔案已經建立,儲存在:\n自定義"); File file =new File("自定義"); if(!file.exists()){ file.createNewFile(); } FileOutputStream fos=new FileOutputStream(file); BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(fos,"gb2312")); for(int i=0;i<arr.length;i++){ writer.write(arr[i].toString()+"\r\n"); writer.flush(); } fos.close(); writer.close(); } }
記事本寫入的資料如下:
請點選歸併排序,那裡有詳細介紹,有各種語言編寫的。只需要把它覆蓋以上的氣泡排序的排序部分就可以了。