资源简介

Java数据结构的作业,写出直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序的算法,并用动态界面展示出来。

资源截图

代码片段和文件信息

package DynamicSort;

import javax.swing.JPanel;
import java.awt.*;


//JPanel容器
public class Animation extends JPanel {
private int[] count;
private int line1;
private int line2;
private static final int length = 50; // 排序数据的个数
private int maxCount;
private int begin;
private int end;

// 设置排序数据、两根条条;演示动画
public void showAnimation(int[] count int line1 int line2) {
this.line1 = line1;
this.line2 = line2;
this.count = count;
repaint();
}

// 设置数据、一根条条;演示动画
public void showAnimation(int[] count int line1) {
this.line1 = line1;
this.count = count;
this.begin = 0;
this.end = count.length;
repaint();
}

// 设置数据;演示动画
public void showAnimation(int count[]) {
this.count = count;
this.begin = 0;
this.end = count.length;
repaint();
}

public Animation() {
setCount();
setMaxCount(count);
showAnimation(count);
}

public int[] getCount() {
return count;
}

public static int getLength() {
return length;
}

// 设置随机数
public void setCount() {
count = new int[length];

boolean flag = false;
int temp;
int line1 = 0;
while (line1 < length) {
temp = (int) (Math.random() * length) + 1;
// 检查是不是同一个元素
for (int j = 0; j < line1; j++) {
if (temp == count[j]) {
flag = true;
break;
} else {
flag = false;
}
}

if (!flag)
count[line1++] = temp;
}
}

// 设置动画的参数
protected void paintComponent(Graphics g) {
if (count == null) {
return;
}

super.paintComponent(g);

// 面板大小及栏位视情况变化
int width = getWidth();
int height = getHeight();
int interval = (width - 50) / length; // 小条条的间隔
// 设置第一根条条距离边栏的距离
int d = 25;

for (int i = 0; i < begin - 1; i++) {
d += interval;
}

// 设置小条条的外观
for (int i = begin; i < end; i++) {

int barHeight = (int) (((double) count[i] / (double) maxCount) * (height - 55));

// 第一根小条条
if (i == line1) {
g.setColor(Color.DARK_GRAY );
g.fillRect(d height - barHeight interval barHeight);
d += interval;
line1 = -1;
}

// 第二根小条条
if (i == line2) {
g.setColor(Color.DARK_GRAY );
g.fillRect(d height - barHeight interval barHeight);
d += interval;
line2 = -1;
}

// 已经归位的条条
g.setColor(Color.LIGHT_GRAY);
g.fillRect(d height - barHeight interval barHeight);

// 给下一个条条挪空
d += interval;

}
}

private void setMaxCount(int count[]) {
int maxCount = 0;
for (int i = 0; i < length; i++) {
if (maxCount < count[i])
maxCount = count[i];
}
this.maxCount = maxCount;

}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-02 22:19  动态演示排序算法\DynamicSort\
     文件        2797  2018-06-08 19:05  动态演示排序算法\DynamicSort\Animation.java
     文件        8007  2018-01-02 19:55  动态演示排序算法\DynamicSort\Sorting.java
     文件        2317  2018-06-08 19:05  动态演示排序算法\DynamicSort\SortingDisplay.java
     目录           0  2018-06-08 19:04  动态演示排序算法\

评论

共有 条评论