各位进来关注的电脑高手,先谢谢了!
我的程序是为了用3种不同的方法来排序。首先创造一串数据(都是整数),然后用插入排序,快速排序、还有程序包里的ARRYS 三种不同的方法排同一个字串, 最后一个程序是执行程序(为了显示结果,并比较三种方法的执行时间)
一共就这5个类。 以下是我的程序:
类一:public class Creation{
int[] tab;
public Creation (int n){
tab=new int[n];
for(int i=0; i<tab.length; i++){
tab[i]=(int)(Math.random()*10);
}
tab[0]=Integer.MIN_VALUE;
}
public void affichetab(int c[]){
for(int i=0; i<c.length; i++){
System.out.print(c[i]+" ");}
}
public Creation(Creation c){
Creation e=new Creation(c.tab.length);
for (int i=0;i<c.tab.length;i++){
e.tab[i]=c.tab[i];
tab=e.tab;}
}
public Creation(int c[]){
Creation e=new Creation(c.length);
for (int i=0;i<c.length;i++){
e.tab[i]=c[i];
tab=e.tab;}
}
}
类二:public class Triinsertion extends Creation{
public Triinsertion(int n){
super(n);}
public void tri(){
int temp;
for(int i=0; i<tab.length; i++){
for(int j=i-1; j>=0;j--){
if(tab[j]>tab[j+1]){
temp=tab[j];
tab[j]=tab[j+1];
tab[j+1]=temp;}
}
}
}
}
类三:public class Trirapide extends Creation{
public Trirapide(int n){
super (n);
}
public Trirapide(int tab[]){
super(tab);}
public void echange(int i,int j){
int temp=tab[i];
tab[i]=tab[j];
tab[j]=temp;
}
public int partition(int l, int r){
int v=tab[r];
int i=l;
int j=r;
while(i<j){
while(tab[i]<v){i++;}
while(tab[j]>=v){j--;}
echange(i,j);
}
echange(i,j);
echange(i,r);
return i;
}
public void trirapide(int l,int r){
if(l<r){
int i;
i=partition(l,r);
trirapide(l,i-1);
trirapide(i+1,r);
}
}
}
类四:import java.util.Arrays;
public class Trisort extends Creation{
public Trisort(int tab[]){
super(tab);}
public Trisort(int n){
super(n);
}
public void tri(){
Arrays.sort(tab);
}
}
import java.util.*;
类五(执行):public class Principale{
public static void main(String arg[]){
Triinsertion t=new Triinsertion(10);
Trirapide r=new Trirapide(t.tab);
Trisort s=new Trisort(t.tab);
System.out.println("la suite original: ");
t.affichetab(t.tab);
System.out.println();
long t1=(new Date()).getTime();
t.tri();
long t2=(new Date()).getTime();
long x=t2-t1;
System.out.println("la suite triinsertion: ");
t.affichetab(t.tab);
System.out.println();
System.out.println("le temps d'execution pour trier le tableau avec Triinsertion:"+x);
System.out.println();
System.out.println("la suite original: ");
r.affichetab(r.tab);
System.out.println();
long t3=(new Date()).getTime();
r.trirapide(1,r.tab.length-1);
long t4=(new Date()).getTime();
long y=t4-t3;
System.out.println("la suite trirapide: ");
r.affichetab(r.tab);
System.out.println();
System.out.println("le temps d'execution pour trier le tableau avec Trirapide:"+y);
System.out.println();
System.out.println("la suite original: ");
s.affichetab(s.tab);
System.out.println();
long t5=(new Date()).getTime();
s.tri();
long t6=(new Date()).getTime();
long z=t6-t5;
System.out.println("la suite trisort: ");
s.affichetab(s.tab);
System.out.println();
System.out.println("le temps d'execution pour trier le tableau avec Trisort:"+z);
System.out.println();
}
}
以上是我的程序,现在我想把第一个类变成抽象的,就是:
public abstract class Creation{
//原程序不知怎么改!
public void abstract tri();//加上这一句,tri 就是排序。
}
后面的程序好像因为加入了abstract也都要改,我是插班的,编没抽象的那个已经要命了,一加abstract 我就找不到北了。
各位麻烦你们能不能改完了贴上来,我练术语都不懂,几乎是自己瞎学,你们要是只指点一两句,我连看都看不懂。
我的原程序是用JCreator 编的,运行的很好,没有错误。
请大家注意是排同一个数串。
[此贴子已经被作者于2007-10-22 15:47:14编辑过]