package thread;
import java.lang.Runnable;
import java.math.*;
import java.util.*;
public class TestSort extends Thread{
int data[] = new int[10000];
String name;
public TestSort(String name)
{
super(name);
this.name = name;
setTheArray();
}
void setTheArray()
{
int i=0;
while(i<10000)
{
data[i++]=(int)Math.random();
}
}
public void swap(int []array,int i,int j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
public void selectionSort()
{
Calendar time1 = Calendar.getInstance();
int sec1 = time1.get(Calendar.MILLISECOND);
System.out.println("selectionSort");
for(int i = 0;i<data.length;i++)
{
int minIdex = i;
for( int j = i+1;j<data.length;j++)
if (data[j]<data[minIdex])
minIdex = j;
if(minIdex != i)
swap(data,minIdex,i);
}
Calendar time2 = Calendar.getInstance();
int sec2 = time2.get(Calendar.MILLISECOND);
// System.out.println("selectionSort used the millisec is"+(sec2-sec1));
}
public void bubbleSort()
{
Calendar time5 = Calendar.getInstance();
int sec5 = time5.get(Calendar.MILLISECOND);
System.out.println("bubbleSort");
for(int i = 0;i<data.length-1;i++)
{
boolean swapped = false;
for(int j = 0;j<data.length-i-1;j++)
if(data[j]>data[j+1])
{
swap(data,j,j+1);
swapped = true;
}
if(!swapped)
return;
}
Calendar time6 = Calendar.getInstance();
int sec6 = time6.get(Calendar.MILLISECOND);
// System.out.println("bubbleSortused the millisec is"+(sec6-sec5));
}
public void insertionSort()
{
Calendar time3 = Calendar.getInstance();
int sec3 = time3.get(Calendar.MILLISECOND);
System.out.println("insertionSort");
for(int i = 1;i<data.length;i++)
{
int itemToInsert = data[i];
int j = i-1;
while(j>=0)
{
if(itemToInsert<data[j])
{
data[j+1] = data[j];
j--;
}
else
break;
}
data[j+1] = itemToInsert;
}
Calendar time4 = Calendar.getInstance();
int sec4 = time4.get(Calendar.MILLISECOND);
// System.out.println("insertionSort used the millisec is"+(sec4-sec3));
}
public void run()
{
synchronized (this.name) {
if(this.name.equals("selectionSort"))
selectionSort();
else if(this.name.equalsIgnoreCase("bubleSort"))
bubbleSort();
else if(this.name.equals("insertSort"))
insertionSort();
}
}
public static void main(String args[])
{
TestSort p1 = new TestSort("selectionSort");
TestSort p2 = new TestSort("bubleSort");
TestSort p3 = new TestSort("insertSort");
p1.setPriority(Thread.MAX_PRIORITY);
p1.setPriority(Thread.NORM_PRIORITY);
p1.setPriority(Thread.MIN_PRIORITY);
p1.start();
p2.start();
p3.start();
}
}
结果是随机调度线程???