您的位置:首页 > 其它

冒泡排序(方法名:bubbleSort) 与 归并排序(mergeSort)

2014-03-26 12:09 507 查看
对文件 largeW.txt下载链接)中的数据,编程实现冒泡排序(方法名:bubbleSort)
与 归并排序(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个进行排序,结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: