第三周作业——冒泡排序和归并排序
2014-06-07 15:47
543 查看
1. 排序。对文件 largeW.txt(下载链接)中的数据,编程实现冒泡排序(方法名:bubbleSort)
与 归并排序(mergeSort),把排序后的结果分别保存到largeW_bubble.txt 和 largeW_merge.txt 中,把两种排序结果的运行时间输出到屏幕中(发博文时把运行时间的截图作为运行结果提交)。
====
=====
运行结果
====
排序结果:
http://pan.baidu.com/s/1bnemVzp
与 归并排序(mergeSort),把排序后的结果分别保存到largeW_bubble.txt 和 largeW_merge.txt 中,把两种排序结果的运行时间输出到屏幕中(发博文时把运行时间的截图作为运行结果提交)。
====
package SYS3_1; import java.io.*; import java.util.*; public class SYS3_1 { //====冒泡排序 public static void bubbleSort(String[] arr,int len,int res,String a){ for(int i =0;i <len-1;i++){ for(int j =i+1;j<len;j++){ res=arr[i].compareTo(arr[j]); if(res>0){ a=arr[i]; arr[i]=arr[j]; arr[j]=a; } } } } //====归并算法 public static void partition(String[] arr,int head,int tail){ if(head < tail){ int mid = (head+tail )/2; partition(arr,head,mid);//前半部分 partition(arr,mid+1,tail);//后半部分 mergeSort(arr,head,tail,mid); } } //归并排序 public static void mergeSort(String[] arr,int head,int tail,int mid){ String[] tArr = new String[tail];//总数 int tArrIndex = 0; int part1ArrIndex = head;//前部 int part2ArrIndex = mid+1;//后部 int l; while((part1ArrIndex <= mid)&&(part2ArrIndex <= tail)){ l = arr[part1ArrIndex].compareTo(arr[part2ArrIndex]);//对比数据长度 if(l < 0){ tArr[tArrIndex ++] = arr[part1ArrIndex ++]; } else{ tArr[tArrIndex ++] = arr[part2ArrIndex ++]; } } while(part1ArrIndex < mid){ tArr[tArrIndex ++] = arr[part1ArrIndex ++]; } while(part2ArrIndex < mid){ tArr[tArrIndex ++] = arr[part2ArrIndex ++]; } } //====主程序 public static void main(String[] args) throws Exception{ try{ FileReader FR =new FileReader("E:\\largeW.txt"); BufferedReader BR =new BufferedReader(FR); int len=0; while(BR.readLine() !=null){ len++; } System.out.print("文件数据总量: "); System.out.println(len); String[] s=new String[len]; int t =0; String r1 =""; FileReader FR1 =new FileReader("E:\\largeW.txt"); BufferedReader BR1=new BufferedReader(FR1); while((r1=BR1.readLine()) !=null){ s[t]=r1; t++; } System.out.println("文本数据量: "+len); System.out.print("请输入要运算的数据量(应小于上面数据量): "); Scanner sc =new Scanner(System.in); int len1=sc.nextInt(); int res = 0; String a = null; long startTime =System.currentTimeMillis();//冒泡排序开始时间 //进行冒泡排序 bubbleSort(s,len1,res,a); long endTime =System.currentTimeMillis();//冒泡排序程序结束 System.out.println("冒泡排序运行时间: "+(endTime -startTime) +"ms"); //对冒泡排序结果输出 FileWriter fw =new FileWriter("E:\\largeW_bubble.txt",true); BufferedWriter writer =new BufferedWriter(fw); for(int i=0;i<len;i++){ writer.write(s[i]+"\r\n"); } long startTime1=System.currentTimeMillis();//递归排序开始时间 //进行递归排序 partition(s,0,len1-1); long endTime1=System.currentTimeMillis();//递归排序结束时间 System.out.println("归并排序运行时间: "+(endTime1-startTime1)+"ms"); //对归并排序结果输出 FileWriter fw1=new FileWriter("e:\\largeW_merge.txt",true); BufferedWriter writer1=new BufferedWriter(fw1); for(int i=0;i<len1;i++){ writer1.write(s[i]+"\r\n"); } } catch(IOException e){ System.out.println("程序错误,请重新运行,输入合理数据!"); } } }
=====
运行结果
====
排序结果:
http://pan.baidu.com/s/1bnemVzp
相关文章推荐
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业-冒泡排序与归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序(BubbleSort)与归并排序(MergeSort)
- 第三周----作业冒泡排序与归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序(BubbleSort)与归并排序(MergeSort)
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序(计科1113练思安)
- 第三周作业--冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- java-冒泡排序与归并排序(第三周作业)
- 第三周作业 -- 冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序