📄 qsort.java
字号:
// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: QSort.java
import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class QSort extends Applet
implements Runnable, ActionListener
{
public QSort()
{
bu1 = new Button("Create");
bu2 = new Button("Sort");
txf = new TextField(10);
size = 0;
noarray = true;
invalid = false;
parted = false;
fon1 = new Font("TimesRoman", 1, 20);
fon2 = new Font("TimesRoman", 1, 14);
fonsig = new Font("TimesRoman", 2, 10);
col = (new Color[] {
Color.green, Color.red, Color.yellow, Color.blue, Color.magenta, Color.cyan, Color.orange, Color.lightGray
});
}
public void run()
{
sort(0, size - 1);
drawImg();
noarray = true;
parted = false;
}
public void init()
{
add(bu1);
add(bu2);
add(txf);
bu1.addActionListener(this);
bu2.addActionListener(this);
txf.setText("16");
offimg = createImage(450, 450);
h = offimg.getGraphics();
}
public void paint(Graphics g)
{
g.drawImage(offimg, 0, 0, this);
}
private void drawImg()
{
h.setColor(Color.pink);
h.fillRect(0, 0, 450, 450);
h.setColor(Color.blue);
h.setFont(fonsig);
h.drawString("R.Mukundan/CSSE/U.Canterbury (2006).", 1, 440);
h.setFont(fon1);
h.setColor(Color.blue);
if(invalid)
{
h.drawString("Only numbers 5 to 100 are valid!", 80, 50);
invalid = false;
repaint();
return;
}
if(noarray)
{
h.drawString("Create an array: Input size and click 'Create'", 20, 50);
repaint();
return;
}
if(size <= 20)
{
for(int i = 0; i < size; i++)
{
int k = arr[i] % 8;
h.setColor(col[k]);
h.fillRect(20 * i + 20, 350 - arr[i], 15, arr[i]);
h.setColor(Color.black);
h.drawRect(20 * i + 20, 350 - arr[i], 15, arr[i]);
}
} else
{
for(int j = 0; j < size; j++)
{
h.setColor(Color.blue);
h.drawRect(4 * j + 20, 350 - arr[j], 1, arr[j]);
}
}
if(parted && size <= 20)
{
h.setColor(Color.black);
int l = 20 * isw1 + 18;
int i1 = 20 * (isw2 - isw1) + 20;
h.drawRect(l, 95, i1, 280);
i1 = 20 * isw3 + 27;
h.drawLine(i1, 355, i1, 370);
h.drawLine(i1, 355, i1 - 5, 360);
h.drawLine(i1, 355, i1 + 5, 360);
parted = false;
}
repaint();
}
public void actionPerformed(ActionEvent actionevent)
{
val = Integer.parseInt(txf.getText());
if(actionevent.getSource() == bu1)
{
if(val < 5 || val > 100)
{
invalid = true;
} else
{
size = val;
arr = new int[size];
noarray = false;
invalid = false;
boolean flag = false;
for(int j = 0; j < size; j++)
{
int i = (int)(Math.random() * 250D);
if(i < 10)
i += 100;
arr[j] = i;
}
}
} else
if(actionevent.getSource() == bu2)
{
runner = new Thread(this);
runner.start();
return;
}
drawImg();
}
private void display(int i, int j, int k)
{
parted = true;
isw1 = i;
isw2 = j;
isw3 = k;
drawImg();
slow();
}
private void sort(int arr[],int i, int j)
{
int k = j;
if(i >= j)
return;
if(size <= 20)
display(i, j, k);
k = partition(arr[],i, j);
display(i, j, k);
sort(arr[],i, k - 1);
sort(arr[],k + 1, j);
}
private int partition(int arr[],int p, int r)
{
int x=arr[p];
int i= p-1;
int j=r+1;
while (i > j)
while (arr[--j]>x);
while (arr[++i]<x);
if(i < j) swap(arr[i], arr[j]);
return j;
}
private void swap(int i, int j)
{
int k = arr[i];
arr[i] = arr[j];
arr[j] = k;
}
private void slow()
{
int i = size > 20 ? 10 : 1000;
try
{
Thread.sleep(1000);
}
catch(InterruptedException interruptedexception) { }
}
public void update(Graphics g)
{
paint(g);
}
Thread runner;
private Button bu1;
private Button bu2;
private TextField txf;
private int val;
private int size;
private int isw1;
private int isw2;
private int isw3;
private boolean noarray;
private boolean invalid;
private boolean parted;
private Font fon1;
private Font fon2;
private Font fonsig;
private Color col[];
private int arr[];
private Image offimg;
Graphics h;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -