?? sort.java
字號(hào):
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時(shí)是冒泡法
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時(shí)是選擇法
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;//柱子個(gè)數(shù)
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();
//安鈕設(shè)置
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());//新建數(shù)組
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();
}
//圖形輸出函數(shù)
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);
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -