📄 shellsort.java
字号:
package datastructure;import java.awt.*;import java.awt.event.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author unascribed * @version 1.0 */import javax.swing.*;public class ShellSort extends Panel implements Runnable, ActionListener{ private Image offscreenImage; private Graphics offscreenGraphics; private int aWidth; private int aHeight; private Thread runner; private int groupSize; private ShellPersonGroup theShellPersonGroup; private boolean runFlag; private int order; public static JButton newButton; public static JButton stayButton;; //public static JButton stayButton; public static JButton runButton; public static JButton stepButton; bsDialog inputDig; CodeAnimationPanel codePanel; int data[]={4, 153, 19, 199, 61, 158, 28, 97, 144, 75, 11, 88, 180}; public ShellSort(bsDialog inputDig) { this.inputDig=inputDig; groupSize = 10; order = 1; setLayout(new BorderLayout()); } public void init() { String as[]={"void ShellInsert ( SqList &L,int dlta[],int t) ", "{ for (k=0;k<t;++t);", " { dk=dlta[k];", " for ( i=dk+1; i<=L.length; ++i )", " if ( L.r[i].key < L.r[i-dk].key ) ", " { L.r[0] = L.r[i]; ", " for ( j=i-dk; j>0 && L.r[0].key < L.r[j].key; j-=dk )", " L.r[j+dk] = L.r[j]; " , " L.r[j+dk] = L.r[0]; }", " } ", "}"}; codePanel=new CodeAnimationPanel(as); this.add(codePanel,BorderLayout.EAST); theShellPersonGroup = new ShellPersonGroup(data,codePanel); newButton = new JButton("新建"); newButton.addActionListener(this); runButton = new JButton("执行"); runButton.addActionListener(this); stepButton = new JButton("单步"); stepButton.addActionListener(this); stayButton = new JButton("暂停"); stayButton.addActionListener(this); runFlag = false; theShellPersonGroup.setDrawMode(2); paintComponents(getGraphics()); show(); } public void paint(Graphics g) { theShellPersonGroup.draw(g); } public void update(Graphics g) { paint(g); } public void actionPerformed(ActionEvent actionevent) { if(actionevent.getSource() == newButton) { inputDig.setVisible(true); // inputDig.get int [] data=inputDig.getResult(); runFlag = false; //order = order != 1 ? 1 : 2; theShellPersonGroup = new ShellPersonGroup(data,codePanel); } else if(actionevent.getSource() == runButton) { theShellPersonGroup.setDrawMode(1); runFlag = true; } else if(actionevent.getSource() == stepButton && !theShellPersonGroup.getDone()) { runFlag = false; theShellPersonGroup.sortStep(); theShellPersonGroup.setDrawMode(1); } else if (actionevent.getSource() == stayButton) { runFlag = false; } repaint(); } public void start() { if(runner == null) { runner = new Thread(this); runner.start(); } } public void stop() { runner = null; } public void run() { for(Thread thread = Thread.currentThread(); runner == thread;) if(runFlag && !theShellPersonGroup.getDone()) { theShellPersonGroup.sortStep(); repaint(); theShellPersonGroup.setDrawMode(1); int i = GlobalControls.delay; try { Thread.sleep(i); } catch(InterruptedException _ex) { } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -