【发布时间】:2019-07-02 16:15:08
【问题描述】:
我想做一个简单的冒泡排序练习,但我不知道我应该改变什么才能完成这项工作,但也不知道我所拥有的绘图方法。这是我的代码:
package sorting;
import java.awt.Graphics;
import javax.swing.JFrame;
public class Sorting extends JFrame{
public int[] values = new int[800];
public static void main(String[] args) {
Sorting sort = new Sorting();
}
public Sorting(){
setSize(800, 500);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setTitle("Sorting");
}
@Override
public void paint(Graphics g){
for (int i = 0; i < 800; i++){
values[i] = (int)(Math.random()*500);
for (int k = 0; k < 800; k++){
g.drawLine(k, 500, k, 500-values[k]);
}
}
for (int j = 0; j < 800; j++){
for (int a = 0; a < 800 - j - 1; a++){
int r = values[j];
int b = values[j + 1];
if (a > b){
swap(values, j, j+1);
}
}
}
}
private void swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}
我的猜测是我的 values 数组没有保存在绘制方法中创建的值,这就是交换方法不起作用但我不确定的原因。
【问题讨论】:
-
“不工作”并没有真正描述问题。这具体如何失败?考虑这是一个熟悉调试器使用的机会。使用调试器,您可以在代码执行时逐行单步执行代码,并观察运行时行为和变量值的变化。执行此操作时,您首先在哪里观察到操作的意外结果?
-
很抱歉我不够具体。在这个阶段,我相信程序应该向我展示从最短到最长的排序,同时它仍然向我展示随机行。我不知道该怎么做才能修复它
标签: java bubble-sort