您的位置:首页 > 其它

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

2014-03-26 21:06 549 查看
import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

public class xz1

{

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);

}

}

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++];

}

}

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("文本数据量是: "+len);

len=5000;

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]);

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");

}

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");

}

}catch(IOException e)

{

System.out.println("ERROR");

}

}

}

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