收藏 分享(赏)

java实现算法导论书中的快速排序归并排序插入排序.doc

上传人:hskm5268 文档编号:7057141 上传时间:2019-05-04 格式:DOC 页数:9 大小:17.70KB
下载 相关 举报
java实现算法导论书中的快速排序归并排序插入排序.doc_第1页
第1页 / 共9页
java实现算法导论书中的快速排序归并排序插入排序.doc_第2页
第2页 / 共9页
java实现算法导论书中的快速排序归并排序插入排序.doc_第3页
第3页 / 共9页
java实现算法导论书中的快速排序归并排序插入排序.doc_第4页
第4页 / 共9页
java实现算法导论书中的快速排序归并排序插入排序.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、package algorithm.echo;import java.io.FileReader;import java.io.*;import java.util.Random;import java.util.Scanner;public class FirstTest /static int num;static String path=“F:/b.txt“;static String path1=“F:/归并排序.txt“;static String path2=“F:/快速排序.txt“;static String path3=“F:/插入排序.txt“;static String

2、path4=“F:/归并排序 1.txt“;static int Ar=new int30005;static int A =new int30005;static int B =new int30005;static int C =new int30005;public static void qkWenben (String m)throws ExceptionFileOutputStream testfile=new FileOutputStream(m);testfile.write(new String(“).getBytes();/* 清空 static 数组* */public

3、int qingkong(int q)int b=new intq.length;for(int i=0;i0i=i-1;Ar1i+1=key;/* 快速排序* * */public int partition(int Ar,int p,int r)int key;int x=Arr,j;int i=p-1;for(j=p;j=r-1;j+)if(Arj=x)i=i+1;key=Ari;Ari=Arj;Arj=key;key=Ari+1;Ari+1=Arr;Arr=key;return i+1;public void quicksort(int Ar,int p,int r)int q;if(

4、pr)q=partition(Ar,p,r);quicksort(Ar,p,q-1);quicksort(Ar,q+1,r); /* 归并排序* */public void merge(int Ar,int p,int q,int r)int i,j,k,n1=q-p+1,n2=r-q;int L1,R1;L1=new intn1+2;R1=new intn2+2;for(i=1;i=n1;i+)L1i=Arp+i-1;for(j=1;j=n2;j+)R1j=Arq+j;L1n1+1=100000;/因为生成的随即数是 0-30000 范围内的数据R1n2+1=100000;i=1;j=1;f

5、or(k=p;k=r;k+)if(L1i= R1j)Ark=L1i;i=i+1;elseArk=R1j;j=j+1;public void MergeSort(int Ar,int p,int r)int q;if(pr)q=(p+r)/2;MergeSort(Ar,p,q);MergeSort(Ar,q+1,r);merge(Ar,p,q,r);/*public static void merge(int data,int i,int m,int j)/* 把 dataim和 datam+1j归并* 放到 temp10m-i和 temp20j-m-1中* 归并到 temp0j-i中* 然后复

6、制到 dataij中* * */*int temp1,temp2,temp;temp1=new intm-i+1+1;temp2=new intj-m-1+1+1;temp=new intj-i+1;for(int count=0;countm-i+1;count+)temp1count=datacount+i;temp1m-i+1=100000;for(int count=0;countj-m-1+1;count+)temp2count=datacount+m+1;temp2j-m=100000;int index1=0,index2=0;for(int count=0;countj-i+1

7、;count+)if(temp1index1temp2index2)tempcount=temp1index1;index1+;elsetempcount=temp2index2;index2+;for(int count=0;counttemp.length;count+)datai+count=tempcount;public static void mergeSort(int data, int i, int j)if(ij)mergeSort(data,i,(i+j)/2);mergeSort(data,(i+j)/2+1,j);merge(data,i,(i+j)/2,j);*/pu

8、blic static void main(String args) throws Exception qkWenben(path); qkWenben(path1); qkWenben(path2); qkWenben(path3); long t1,t2;t1=System.currentTimeMillis(); int m,num,Sel;int p=1;int r,zero;FirstTest br=new FirstTest ();Scanner sac=new Scanner(System.in);System.out.println(“请输入要产生的随机数的个数(num):“)

9、;num=sac.nextInt();System.out.println(“输入要产生的随机数的范围(0m)上限 m“);m=sac.nextInt();RandomFuction(m,num);Ar=br.qingkong(Ar);Ar=br.Reader();t2=System.currentTimeMillis();System.out.println(“运行此程序所用的时间是“+(t2-t1)+“ms。“);/ 计算程序所用的时间r=num;doSystem.out.println(“请选择要进行的排序:“);System.out.println(“【1】归并排序“);System.

10、out.println(“【2】快速排序“);System.out.println(“【3】插入排序“);Sel=sac.nextInt(); switch(Sel)case 1:A=br.qingkong(A);System.out.println(“【1】归并排序“);for(int e=1;e=num;e+)Ae=Are;t1=System.currentTimeMillis();/ A=br.Reader();/*mergeSort(A,1,r/2);mergeSort(A,r/2+1,r);merge(A,1,r/2,r);*/br.MergeSort(A, 1, r);t2=Sys

11、tem.currentTimeMillis();System.out.println(“运行此程序所用的时间是“+(t2-t1)+“ms 。“);/计算程序所用的时间WriterFuction(path1,num,A);/*for(int i=1;i=num;i+)System.out.println(Ai);*/break;case 2:B=br.qingkong(B);System.out.println(“【2】快速排序“);for(int e=1;e=num;e+)Be=Are ;/ B=br.Reader();t1=System.currentTimeMillis();br.quic

12、ksort(B, p, r); t2=System.currentTimeMillis();WriterFuction(path2,num,B);/*for(int i=1;i=num;i+)System.out.println(Bi);*/System.out.println(“运行此程序所用的时间是“+(t2-t1)+“ms 。“);break;case 3:C=br.qingkong(C);System.out.println(“【3】插入排序“);for(int e=1;e=num;e+)Ce=Are ;/C=br.Reader();t1=System.currentTimeMilli

13、s();br.InsertSort(C,num);t2=System.currentTimeMillis();WriterFuction(path3,num,C);/*for(int i=1;i=num;i+)System.out.println(Ci);*/System.out.println(“运行此程序所用的时间是“+(t2-t1)+“ms 。“);break;default : System.out.println(“输入的数据应在 13 之间!“);break;System.out.println(“继续请输入 0,否则输入其他字符结束!( 13 除外)“);zero=sac.nextInt();while(zero=0);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报