Java 合并排序逐步执行
我试图一步一步地执行由按钮单击事件处理的合并排序。我无法执行此操作。我想要的是,当我点击一个名为“下一步”的按钮时,它会执行一个步骤,以此类推。 核心是我的主课。其中包括所有gui按钮等。 这是我的密码。 `Java 合并排序逐步执行,java,event-handling,buttonclick,Java,Event Handling,Buttonclick,我试图一步一步地执行由按钮单击事件处理的合并排序。我无法执行此操作。我想要的是,当我点击一个名为“下一步”的按钮时,它会执行一个步骤,以此类推。 核心是我的主课。其中包括所有gui按钮等。 这是我的密码。 ` 包裹分拣机; 进口分拣机。核心; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener; 导入java.util.ArrayList; 导入java.util.List; 进口分拣机。核心$step; 导入javax.s
包裹分拣机;
进口分拣机。核心;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入java.util.List;
进口分拣机。核心$step;
导入javax.swing.JOptionPane;
//包裹分拣机的参考等级:
//核心
公共类合并排序步骤
实现可运行的ActionListener
{
私有静态列表;
专用整数计数器=0;
私有整数长度_列表;
公共静态布尔步长=false;
线程排序Thread=null;
公共合并排序步骤()
{
//showMessageDialog(Core.form,“更改将应用于下一次排序”);
Core.btnNext.addActionListener(新的Core$step(this));
}
私有无效点击执行1(ActionEvent evt){
一步一步=真;
//sortingThread=新线程(此);
//sortingThread.resume();
//run();
}
静态无效访问$click(合并排序\u步骤x0,ActionEvent x1){
x0.单击执行的_1(x1);
}
公开募捐
{
//*****************名单
长度\列表=Core.length;
列表=新的数组列表(长度列表);
对于(int i=0;ipackage sorter;
import sorter.Core;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import sorter.Core$step;
import javax.swing.JOptionPane;
// Referenced classes of package sorter:
// Core
public class MergeSort_Step
implements Runnable, ActionListener
{
private static List<Integer> lists;
private int counter =0;
private int length_list;
public static boolean STEP_BY_STEP=false;
Thread sortingThread=null;
public MergeSort_Step()
{
//JOptionPane.showMessageDialog(Core.form, "Changes will apply on next sort");
Core.btnNext.addActionListener(new Core$step(this));
}
private void clickperformed_1(ActionEvent evt) {
STEP_BY_STEP = true;
//sortingThread = new Thread (this);
//sortingThread.resume();
//run();
}
static void access$click(MergeSort_Step x0, ActionEvent x1) {
x0.clickperformed_1(x1);
}
public void run()
{
//*****************list
length_list = Core.length;
lists = new ArrayList<Integer>(length_list);
for (int i = 0; i < length_list; i++) {
lists.add(0);
}
//System.out.println("Results from file in list: " +lists.size());
mergesort_list (0,length_list-1);
JOptionPane.showMessageDialog(null, "Comparisions : "+ counter, "Notification!", 1);
Core.toggleSorting();
}
//***************list
public void mergesort_list(int low, int high)
{
sortingThread = new Thread (this);
if(low < high)
{
int middle = low + (high - low) / 2;
mergesort_list(low, middle);
mergesort_list(middle + 1, high);
if (Core.STEP_BY_STEP == true || STEP_BY_STEP == true)
{
merge_list(low, middle, high);
//sortingThread.
STEP_BY_STEP = false;
Core.STEP_BY_STEP = false;
}
}
}
//***************list
private void merge_list(int low, int middle, int high)
{
int i;
for(i = low; i <= high; i++)
{
lists.set(i, Core.num.get(i)); //= (List<Integer>) Core.num.get(i);
System.out.println("Current Array Status: " +lists.toString());
Core.numStatus[i] = Core.DONE;
}
i = low;
int j = middle + 1;
int k = low;
{
while(i <= middle && j <= high)
{
if( lists.get(i) <= lists.get(j))
{
Core.num.set(k, lists.get(i));
Core.numStatus[i] = Core.DONE;
Core.updateScreen();
i++;
} else
{
Core.num.set(k, lists.get(j));
Core.numStatus[i] = Core.DONE;
Core.updateScreen();
j++;
}
k++;
Core.numStatus[i] = Core.EVENT;
Core.updateScreen();
//Core.STEP_status = false;
counter++;
}
while(i <= middle)
{
Core.num.set(k, lists.get(i));
Core.numStatus[i] = Core.EVENT;
Core.updateScreen();
k++;
i++;
Core.updateScreen();
//Core.STEP_status = false;
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}`