java--第14周实验--任务1--.编写多线程程序

/* (程序头部注释开始)     * 程序的版权和版本声明部分     * Copyright (c) 2011, 烟台大学计算机学院学生      * All rights reserved.     * 文件名称:编写多线程程序。   * 版 本 号: V1.0      * 对任务及求解方法的描述部分     * 输入描述:先封装一类对象RandomNumber,功能是先产生一个大于10的随机整数n,再产生n个随机数并存放于数组中。  * 输入描述:然后封装两个线程Thread1(要求是Thread的子类)和Thread2(要求实现Runnable接口)  * 输入描述:并发地对所生成的随机数进行排序,其中Thread1要求采用冒泡排序法进行排序,并输出排序结果。  * 输入描述:Thread2要求采用快速排序法进行排序,并输出排序结果。最后编写主线程TestThread,加入上述两个线程实现程序的并发,  * 输入描述:比较这两个线程排序的结果。  * 问题描述:     * 程序输出:     * 程序头部的注释结束     */  













package huguang14;

public class RandomNumber {
	public int arr[];
	public void RandomNumber1(){
		int  n=(int) (Math.random()*10+11);
		arr = new int[n];
		for(int i =0;i



package huguang14;

public class TestThread {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*	Thread2 t=new Thread2() ;
		Thread1 t1 = new Thread1();
		
		t1.start();
		t.t2.start();*/
		
		
		Thread1 t1 = new Thread1();
		Thread2 t2=new Thread2() ;
		Thread t = new Thread(t2);
		
		t1.start();
		t.start();
		
	}

}


 
  




package huguang14;

public class Thread1 extends Thread {
	
	public void run()
	{	
		 System.out.println("冒泡排序"); 
		RandomNumber randomNumber = new RandomNumber();
		randomNumber.RandomNumber1();
		int[]a=randomNumber.getArr();
		for(int j=0;ja[i+1])
				{
					int t=a[i];
					a[i]=a[i+1];
					a[i+1]=t;
				}
			}
		}
		   for (int i = 0; i < a.length; i++) { 
	            System.out.println("冒泡排序"+a[i]); 
	        } 
		
	}
}


 
  









package huguang14;

public class Thread2  implements Runnable{
	
	Thread t2;
	
	public Thread2(){
		t2=new Thread(this);
	}
	@Override
	public void run() {
		 System.out.println("快速排序"); 
		// TODO Auto-generated method stub
		RandomNumber arr = new RandomNumber();
		arr.RandomNumber1();
		int []a = arr.getArr();
       quickSort(a, 0, a.length - 1);
        
        for (int i = 0; i < a.length; i++) { 
            System.out.println("快速排序"+a[i] + ","); 
        } 
    } 
	
    static int Partition(int[] a, int left, int right)
    {
        int tmp;
        
        //进行一趟縼E倥判丒返回中心记录位置
        int pivot = a[left];//把中心置于a[0]
        while (left < right)
        {
            while(left=pivot)
                right--;
            //将比中心记录小的移到低端
            tmp = a[right];
            a[right] = a[left];
            a[left] = tmp;
            while(left= right - 1)
            return;
        int pivot = Partition(a,left,right);
        quickSort(a, left, pivot-1);
        quickSort(a, pivot+1, right);   
        
      } 
}
		


	


 
  


你可能感兴趣的:(cpp)