⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sort.java

📁 学习java过程中
💻 JAVA
字号:
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.*;
import java.awt.event.*;

class array
{
	public int len,red,green,blue;
	public void Rnum(){
		len=(int)(Math.random()*50);
		red=(int)(Math.random()*256);
		green=(int)(Math.random()*256);
		blue=(int)(Math.random()*256);
	}
};

class interval extends Thread
{
	private Sort target;
	private array Ar[];
	private int n;
	public interval(array r[],int i,Sort t){
        target=t;
		Ar=r;
		n=i;
	}
	public void run(){
	     if(n==1){//n=1时是冒泡法
		    array b=new array();
            for(int i=0;i<Ar.length;i++){
               for(int j=Ar.length-1;j>i;j--){
                   if(Ar[j].len<Ar[j-1].len){
		            b=Ar[j];
		           Ar[j]=Ar[j-1];
		           Ar[j-1]=b;
		           }
				   try{
					 sleep(700);
				     target.test(Ar);
				   }
				   catch(InterruptedException e){}

                }
		    }
		 }
		else if(n==2){//n=2时是选择法
			 array b=new array();
             for (int i = 0; i < Ar.length; i++) {
                 int c = i;
                 for (int j = Ar.length - 1; j > i; j--) {
                    if (Ar[j].len < Ar[c].len) {
                       b=Ar[j];
		               Ar[j]=Ar[c];
		               Ar[c]=b; 
                    }
					try{
					 sleep(700);
				     target.test(Ar);
				   }
				   catch(InterruptedException e){}
                 }
           }
		}
		else if(n==3){
			array b=new array();
			for(int i=1;i<Ar.length;i++){
               for(int j=i;(j>0)&&(Ar[j].len<Ar[j-1].len);j--){
                   b=Ar[j];
                   Ar[j]=Ar[j-1];
                   Ar[j-1]=b;
			       try{
					 sleep(700);
				     target.test(Ar);
				   }
				   catch(InterruptedException e){}
                 
			   }
			}
		}
        Sort.sip=true;
        target.test(Ar);

	}
	

};
public class Sort extends Applet implements ActionListener,ItemListener


{
	
	int N=5;//柱子个数
	static boolean sip;
	array a[];
	boolean door,doorcreat,flag;
    String buttonlabel="bubble";
	Label label2;
	TextField Num;
    Button creat,run;
	int button=0;
	CheckboxGroup sGroup;
    Checkbox bubble,select,insert;
    Panel p1=new Panel();
    Panel p2=new Panel();
    
//安钮设置	
public void init()
	{   a=new array[5];
		for(int i=0;i<5;i++)
		{
			a[i]=new array();
            //a[i].Rnum();
		}
		sGroup=new CheckboxGroup();
		bubble=new Checkbox("Bubble",sGroup,true);
		bubble.addItemListener(this);
        select=new Checkbox("Select",sGroup,false);
		select.addItemListener(this);
        insert=new Checkbox("Insert",sGroup,false);
		insert.addItemListener(this);
		label2=new Label("                                排   序   的   图   表  演  示                                              ");
		add(label2);
        Num=new TextField("5",10);

          p1.add(bubble);
          p1.add(select);
          p1.add(insert);
		creat=new Button("creat");
		creat.addActionListener(this);
		p2.add(Num);
		p2.add(creat);
        add("South",p1);
        add("South",p2);
		run=new Button("run");
		run.addActionListener(this);
		add(run);


	
	}
	

 public void actionPerformed(ActionEvent e)
	{	
           if (e.getActionCommand().equals("creat")){

				    if(!doorcreat){
					  doorcreat=!doorcreat;
					  creat.setLabel("clear");
					  run.setLabel("run");
                      N=Integer.parseInt(Num.getText());//新建数组
					  a=new array[N];
					  for(int i=0;i<N;i++)
					  {
					   a[i]=new array();
                       a[i].Rnum();
					  }
					}
			}
			else if(e.getActionCommand().equals("clear")){
				
			    creat.setLabel("creat");
				run.setLabel("run");
				doorcreat=!doorcreat;
				door=false;
			}

			     
 		   if(e.getActionCommand().equals("run"))
		   {	
			   if(doorcreat){
			   run.setLabel("end");door=true;flag=true;
			   }
		    }
		   else if(e.getActionCommand().equals("end"))
		   {
			   run.setLabel("run");door=false;flag=false;

		   }
			showStatus("You pressed:"+e.paramString());
			
            repaint();
	}
	public void itemStateChanged(ItemEvent e){
		if(e.getSource()==bubble) buttonlabel="bubble";
		if(e.getSource()==select) buttonlabel="select";
		if(e.getSource()==insert) buttonlabel="insert";
	}

public void paint(Graphics g){ 
		if(door){
		   if (buttonlabel.equals("bubble")){
			   if(flag){
                  flag=!flag;
				  
				  g.drawString("Sort will start!",20,150);
			      Bubble(g);
			   }
			   else{
				   if(sip){
			           g.drawString("Sort has finished",20,150);sip=false;
		           }
				   drawRect(g);
			   }
		   }
		   else if(buttonlabel.equals("select")){
			   if(flag){
                  flag=!flag;
				  g.drawString("Sort will start!",20,150);
			      Select(g);
			   }
			   else{
				   if(sip){
			           g.drawString("Sort has finished",20,150);sip=false;
		           }
				   drawRect(g);
			   }
		   }
		   else if(buttonlabel.equals("insert")){
			   	if(flag){
                  flag=!flag;

				  g.drawString("Sort will start!",20,150);
			      Insert(g);
			   }
			   else{
				   if(sip){
			           g.drawString("Sort has finished",20,150);sip=false;
		           }
				   drawRect(g);
			   }
		   }

		}
	    else if(doorcreat){
		   drawRect(g);
		}

		else
			g.drawString("Please creat new number",200,350);
}

//选择法
public void Select(Graphics g){
	button=2;
    interval t1=new interval(a,button,this);
	t1.start();
}

//冒泡法
public void Bubble(Graphics g){
	button=1;
    interval t1=new interval(a,button,this);
	t1.start();
}
public void test(array t[]){
	a=t;
	repaint();
}

//插入法
public void Insert(Graphics g){
	button=3;
    interval t1=new interval(a,button,this);
	t1.start();
}


//图形输出函数
   public void drawRect(Graphics g)
   {

	for(int i=0;i<N;i++)
	  { 
		g.setColor(new Color(a[i].red,a[i].green,a[i].blue));
	    g.draw3DRect(i*20+50,400-a[i].len*5,10,a[i].len*5,true);
	    g.fill3DRect(i*20+50,400-a[i].len*5,10,a[i].len*5,true);
       }
     
   }

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -