第三周作业——冒泡排序和归并排序

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 ArrangeMent{  
    static String Path="D:/largeW.txt";  
    static String bubbleSortDesPath="src/largeW_bubble.txt";     
    static String mergeSortDesPath="src/largeW_merge.txt";       
    public static void main(String[] args) {  
        try {  
            File file=new File(Path);  
            FileInputStream fis=new FileInputStream(file);  
            InputStreamReader reader=new InputStreamReader(fis, "gb2312");  
            BufferedReader bufferedreader=new BufferedReader(reader);   
            String nums="";  
            int num=0;  
            List<Integer> list=new ArrayList<Integer>();  
            while((nums=bufferedreader.readLine())!=null){  
                num=num+1;  
                list.add(Integer.parseInt(nums.trim()));  
            }  
            Integer[] NumsArray=(Integer[])list.toArray(new Integer[num]);   
            long timeStart=System.currentTimeMillis();   
            bubbleSort(NumsArray);  
            long timeEnd=System.currentTimeMillis();   
            System.out.println("冒泡排序所花费的时间是:"+(timeEnd-timeStart)/1000+"秒");  
            ResultSortWriteTxt(NumsArray,0);    
            NumsArray=(Integer[])list.toArray(new Integer[num]);
            Integer[] num1=new Integer[NumsArray.length];  
            timeStart=System.currentTimeMillis();        
            Integer[] result  = mergeSort(NumsArray,0, NumsArray.length - 1,num1);   
            timeEnd=System.currentTimeMillis();    
            System.out.println("归并排序所花费的时间是:"+(timeEnd-timeStart)/1000+"秒");  
            ResultSortWriteTxt(result,1);  
            System.out.println("文本中总共有:"+num+"条数据!");  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
    public static void bubbleSort(Integer[] Array)throws IOException{  
        Integer[] NumsArray=(Integer[]) Array;  
        int temp=0;  
         for(int i=0;i<NumsArray.length;i++){  
             for(int j=i+1;j<NumsArray.length;j++){  
                 if(NumsArray[i]>NumsArray[j]){  
                    temp=NumsArray[i];  
                    NumsArray[i]=NumsArray[j];  
                    NumsArray[j]=temp;  
                 }  
             }  
         }  
    }  
    public static void  ResultSortWriteTxt(Integer[] NumsArray,int whichSort) throws IOException{   
         File file=null;  
         if(whichSort==0){             
             file =new File(bubbleSortDesPath);  
         }else if(whichSort==1){        
             file =new File(mergeSortDesPath);  
         }  
         if(!file.exists()){  
             file.createNewFile();  
         }  
         FileOutputStream fos=new FileOutputStream(file);  
         BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(fos,"gb2312"));  
         for(int i=0;i<NumsArray.length;i++){  
             //System.out.println(NumsArray[i]);  
             bw.write(NumsArray[i].toString()+"\r\n");  
             bw.flush();                   
         }  
         fos.close();  
         bw.close();  
    }  
     private static Integer[] mergeSort(Integer[] num, int s, int t, Integer[] num1) {  
            int temp;  
            Integer[] num2 = new Integer[t + 1];  
            if (s == t){  
             num1[s] = num[s];  
            }else {  
             temp = (s + t) / 2;  
             mergeSort(num, s, temp, num2);          
             mergeSort(num, temp + 1, t, num2);     
             merg(num2, s, temp, t, num1);         
            }  
            return num1;  
     }  
     private static void merg(Integer[] num2, int l, int m, int n, Integer[] num1) {  
         int i, j, k;  
         i = l;  
         j = m + 1;  
         k = l;  
         while (i <= m && j <= n) {  
             if (num2[i] < num2[j]){  
              num1[k++] = num2[i++];  
             }else{  
              num1[k++] = num2[j++];  
             }  
          }  
         while (i <= m) {  
             num1[k++] = num2[i++];  
          }  
         while (j <= n) {  
             num1[k++] = num2[j++];  
         }  
    }   
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值