冒泡排序(方法名:bubbleSort) 与 归并排序(mergeSort)
2014-03-26 12:09
507 查看
对文件 largeW.txt(下载链接)中的数据,编程实现冒泡排序(方法名:bubbleSort)
与 归并排序(mergeSort),把排序后的结果分别保存到largeW_bubble.txt 和 largeW_merge.txt 中,把两种排序结果的运行时间输出到屏幕中
因为文本数量过大,运行速度太慢,选取了20000个进行排序,结果如下:
与 归并排序(mergeSort),把排序后的结果分别保存到largeW_bubble.txt 和 largeW_merge.txt 中,把两种排序结果的运行时间输出到屏幕中
package 排序; import java.io.*; public class t02 { public static void partition(String[] arr, int from, int end) { if (from < end) { int mid = (from + end) / 2; partition(arr, from, mid); partition(arr, mid + 1, end); merge(arr, from, end, mid); // System.out.println(from+"a"); } } public static void merge(String[] arr, int from, int end, int mid) { String[] tmpArr = new String[end]; int tmpArrIndex = 0; int part1ArrIndex = from; int part2ArrIndex = mid + 1; int l; while ((part1ArrIndex <= mid) && (part2ArrIndex <= end)) { l=arr[part1ArrIndex].compareTo(arr[part2ArrIndex]); if (l < 0) { tmpArr[tmpArrIndex++] = arr[part1ArrIndex++]; } else { tmpArr[tmpArrIndex++] = arr[part2ArrIndex++]; } } while (part1ArrIndex <mid) { tmpArr[tmpArrIndex++] = arr[part1ArrIndex++]; } while (part2ArrIndex < end-1) { tmpArr[tmpArrIndex++] = arr[part2ArrIndex++]; } // System.arraycopy(tmpArr, 0, arr, from, end - from + 1); } public static void main(String[] args)throws Exception { try { FileReader fr=new FileReader("F:\\largeW.txt"); BufferedReader br=new BufferedReader(fr); int len=0; while(br.readLine()!=null) { len++; } System.out.println(len); String[] s=new String[len]; int t=0; String rl=""; FileReader fr1=new FileReader("F:\\largeW.txt"); BufferedReader br1=new BufferedReader(fr1); while((rl=br1.readLine())!=null) { s[t]=rl; t++; //System.out.println(p++); } System.out.println("文本数据量是: "+len); System.out.println("选取排序的文本数量为:20000 "); len=20000; int res; String a; long startTime=System.currentTimeMillis(); //获取开始时间 //开始冒泡排序 for(int i=0;i<len-1;i++) for(int j=i+1;j<len;j++) { res=s[i].compareTo(s[j]); //System.out.println(p++); if(res>0) { a=s[i]; s[i]=s[j]; s[j]=a; } } long endTime=System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间: "+(endTime-startTime)+"ms"); FileWriter fw=new FileWriter("F:\\largeW_bubble.txt",true); BufferedWriter writer = new BufferedWriter(fw); for(int i=0;i<len;i++) { writer.write(s[i]+"\r\n"); //System.out.println(p++); } long startTime1=System.currentTimeMillis(); //获取开始时间 //开始归并排序 partition(s,0,len-1); long endTime1=System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间: "+(endTime1-startTime1)+"ms"); FileWriter fw1=new FileWriter("F:\\largeW_merge.txt",true); BufferedWriter writer1 = new BufferedWriter(fw1); for(int i=0;i<len;i++) { writer1.write(s[i]+"\r\n"); //System.out.println(p++); } }catch(IOException e) { System.out.println("ERROR"); } } }
因为文本数量过大,运行速度太慢,选取了20000个进行排序,结果如下:
相关文章推荐
- 算法第三次作业(1. 排序。对文件 largeW.txt(下载链接)中的数据,编程实现冒泡排序(方法名:bubbleSort) 与 归并排序(mergeSort),把排序后的结果分别保存到largeW
- 第三周作业——冒泡排序(BubbleSort)与归并排序(MergeSort)
- 第三周作业——冒泡排序(BubbleSort)与归并排序(MergeSort)
- 数据结构和算法分析之排序篇--归并排序(Merge Sort)和常用排序算法时间复杂度比较(附赠记忆方法)
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
- 归并排序(Merge Sort)
- 归并排序(MergeSort)
- 经典排序算法以及负载平衡下的平行归并排序Parallel Merge Sort with Load Balancing
- js实现常见的三种排序方法(冒泡排序、快速排序、归并排序)
- 排序1+4:归并排序(MergeSort)和堆排序(HeapSort)
- 归并排序(MergeSort)的原理及延伸性思考
- 2路归并排序(MERGE_SORT)
- 结合归并排序和插入排序 Merge with Insertion Sort
- 归并排序(mergeSort)
- 分治法——归并排序(MergeSort)
- 【从零学习经典算法系列】分治策略实例——归并排序(Mergesort)
- 排序算法--归并排序(MergeSort)
- 归并排序(Merge Sort)
- 归并排序(merge sort)