您的位置:首页 > 其它

第三周作业——顺序查找和二分查找

2014-04-01 13:39 281 查看
顺序查找

import java.io.*;
public class bubbleSort {
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(p++);
}
System.out.println("文本数据量是: "+len);
len=1000000;
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)%1000+"s");
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)%1000+"s");

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");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: