看一下我的程序--多线程比较排序算法的快慢
我才学多线程,有很多东西不懂,下面的程序不知道错在哪里,请高手指点一下,谢谢!
public class paixu
{ public int[] text;
public int n=text.length;
public paixu(int[] text)
{
this.text=text;
}
class insert extends Thread //插入排序
{ int i,j,temp;
private int[] text;
public insert(int[] text)
{
this.text=text;
}
public void run()
{ for(i=0;i <n-1;i++)
{ temp=text[i+1];
j=1;
while(j> -1&&temp <=text[j])
{ text[j+1]=text[j];
j--;
}
text[j+1]=temp;
}
for(int i=0;i <n;i++)
System.out.println(text[i]+ " ");
}
}
class maopao extends Thread //冒泡排序
{
private int[] text;
int i,j,flag=1;
int temp;
public maopao(int[] text)
{
this.text=text;
}
public void run()
{ for(i=1;i <n&&flag==1;i++)
{ flag=0;
for(j=0;j <n-i;j++)
{ if(text[j]> text[j+1])
{ flag=1;
temp=text[j];
text[j]=text[j+1];
text[j+1]=temp;
}
}
}
for(int i=0;i <n;i++)
System.out.println(text[i]+ " ");
}
}
public static void main(String args[])
{ int[] text={20,50,12,2,30};
new paixu(text);
(new insert(text)).start();
(new maopao(text)).start();
}
}
[解决办法]
语法上就有好多错误啊-_-!
(1):
public int[] text;
public int n=text.length;
text数组还没有初始化,执行n=text.length会报空!
因此n=text.length需要放到:
public paixu(int[] text)
{
this.text=text;
n=text.length;
}
里面
(2)insert,maopao作为inner class,他们都不是Static(静态),因此,
实例创建时需要主类的实例来创建,如下
paixu thread = new paixu(text);
( thread.new insert(text)).start();
( thread.new maopao(text)).start();
thread.new X(X为inner class);
其他的你再调试吧~
[解决办法]
不用内部类好像就不错了