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<n;i++){
    			int  m=(int) (Math.random()*10+11);
    		 arr[i] = m;
    		
    	}
    }
    	public int[] getArr() {
    		return arr;
    	}
    }
    
     
     
     
     
     
     
    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;j<a.length;j++)
    		{
    			for(int i=0;i<a.length-j-1;i++)
    			{
    				if(a[i]>a[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<right && a[right]>=pivot)
                    right--;
                //将比中心记录小的移到低端
                tmp = a[right];
                a[right] = a[left];
                a[left] = tmp;
                while(left<right && a[left]<=pivot)
                    left++;
                tmp = a[right];
                a[right] = a[left];
                a[left] = tmp;
               //将比中心记录大的移到高端
            }
            a[left] = pivot; //中心移到正确位置
            return left;  //返回中心位置
        }
        
        public static void quickSort(int[] a, int left, int right) { 
            if(left >= right - 1)
                return;
            int pivot = Partition(a,left,right);
            quickSort(a, left, pivot-1);
            quickSort(a, pivot+1, right);   
            
          } 
    }
    		
    
    
    	
    


    
    


    你可能感兴趣的:(java--第14周实验--任务1--.编写多线程程序)