用Java实现搜索算法演示系统
时间: 2024-05-15 12:15:08 浏览: 118
搜索算法演示程序
搜索算法演示系统是一个可以帮助用户学习和理解常见搜索算法的工具。它可以通过可视化的方式演示不同的搜索算法,帮助用户更好地理解算法的工作原理和优劣性。
Java是一种强大的编程语言,它可以很好地实现搜索算法演示系统。下面是一个简单的Java程序,演示了如何用Java实现搜索算法演示系统。
```java
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class SearchDemo extends JPanel implements ActionListener {
private static final long serialVersionUID = 1L;
private static final int WIDTH = 500;
private static final int HEIGHT = 500;
private static final int DELAY = 50;
private static final int TARGET_VALUE = 50;
private ArrayList<Integer> numbers;
private ArrayList<Integer> sortedNumbers;
private int searchIndex;
private boolean found;
private Timer timer;
public SearchDemo() {
setPreferredSize(new Dimension(WIDTH, HEIGHT));
numbers = new ArrayList<Integer>();
for (int i = 0; i < 100; i++) {
numbers.add(i);
}
Collections.shuffle(numbers);
sortedNumbers = new ArrayList<Integer>(numbers);
Collections.sort(sortedNumbers);
timer = new Timer(DELAY, this);
timer.start();
}
@Override
public void actionPerformed(ActionEvent e) {
if (!found) {
if (searchIndex >= sortedNumbers.size()) {
timer.stop();
} else {
if (sortedNumbers.get(searchIndex) == TARGET_VALUE) {
found = true;
timer.stop();
} else {
searchIndex++;
}
}
}
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (int i = 0; i < numbers.size(); i++) {
int value = numbers.get(i);
int x = i * (WIDTH / numbers.size());
int height = value * (HEIGHT / 100);
int y = HEIGHT - height;
g.setColor(Color.BLACK);
g.fillRect(x, y, WIDTH / numbers.size(), height);
}
for (int i = 0; i < sortedNumbers.size(); i++) {
int value = sortedNumbers.get(i);
int x = i * (WIDTH / sortedNumbers.size());
int height = value * (HEIGHT / 100);
int y = HEIGHT - height;
g.setColor(Color.RED);
g.fillRect(x, y, WIDTH / sortedNumbers.size(), height);
}
if (found) {
int x = searchIndex * (WIDTH / sortedNumbers.size());
int y = 0;
int height = HEIGHT;
g.setColor(Color.GREEN);
g.fillRect(x, y, WIDTH / sortedNumbers.size(), height);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Search Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new SearchDemo());
frame.pack();
frame.setVisible(true);
}
}
```
这个程序演示了线性搜索算法。它首先生成一个包含100个随机整数的列表,然后通过线性搜索算法在其中查找特定的值。在每次搜索时,程序都会绘制出原始列表和已排序的列表,并将搜索过程中的当前位置用绿色方块标记出来。
用户可以通过观察程序的运行过程,了解线性搜索算法的工作原理和局限性。如果用户想要尝试其他搜索算法,只需要修改程序中的算法实现即可。
阅读全文