⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 algthread.java

📁 java算法大全
💻 JAVA
字号:
/* AlgThread.java */import java.awt.*;import java.io.*;import java.util.*;public class AlgThread extends Thread {		static int max_data = 10;		static String[] dataSets = 								{"Random Data", "Ascending Data", "Descending Data"};		AlgAnimFrame frame;		DrawingPanel drawingPanel;		int delay = 2000;		int[] a;		IntList[] bin;		public AlgThread(AlgAnimFrame frame) {				this.frame = frame;				this.drawingPanel = frame.getDrawingPanel();				if (frame != null && frame.getAlg() != null && 						frame.getAlg().drawingPanel != null) {						// drawingPanel already created -> this constructor called from						// clicking the run button -> use the generated data set						this.a = frame.getAlg().a;						this.bin = frame.getAlg().bin;				}		}		public void generateData() {				int choice = frame.getDataChoice();				drawingPanel = frame.getDrawingPanel();				frame.getEnableAnim().disable();				frame.getDisableAnim().disable();				frame.setDimension(new Dimension(500, 600));				if (choice == 0) {						generateRandomData(max_data);				} else if (choice == 1) {						generateAscendingData(max_data);				} else if (choice == 2) {						generateDescendingData(max_data);				}				// init bins				bin = new IntList[max_data];				for (int i = 0; i < max_data; i++)						bin[i] = new IntList();				drawingPanel.setData(a, bin);				if (this.isAlive())						this.stop();				}		public void generateRandomData(int n) {				a = new int[n];				for (int i = 0; i < n; i++)						a[i] = new Double(Math.random()*10).intValue();		}		public void generateAscendingData(int n) {				a = new int[n];				for (int i = 0; i < n; i++)						a[i] = i;		}		public void generateDescendingData(int n) {				a = new int[n];				for (int i = 0; i < n; i++)						a[i] = 9-i;		}				public void setDelay(int delay) {				drawingPanel.setDelay(delay);		}				class IntList extends Vector {			public int get(int i) {				return ((Integer)elementAt(i)).intValue();			}		public void put(int i) {			addElement(new Integer(i));			}		}		/*------------------------------------------------*/		public void binsort(int[] a, IntList[] bin) {				/*-*/ frame.Highlight(0);				/*-*/ frame.setText(0, "Emptying all bins...");				// empty all bins				for (int i = 0; i < bin.length; i++) {						bin[i] = new IntList();				} /*-*/ frame.Highlight(2); frame.Highlight(3); frame.Highlight(4); drawingPanel.setData(a, bin);				/*-*/frame.waitStep();				/*-*/ frame.setText(0, "Moving balls into bins...");				// put a[i] into bin[ a[i] ]				for (int i = 0; i < a.length; i++) {						/*-*/ frame.Highlight(7);						bin[ a[i] ].put(a[i]);						/*-*/ frame.setText(1, "Moving ball with value " + a[i] + " to bin " + a[i] + "...");						/*-*/ frame.Highlight(8); drawingPanel.move2bin(i, a[i]);				/*-*/frame.waitStep();				}				// retrieve items from bin				/*-*/ frame.setText(0, "Removing balls from bins...");				int i = 0;				for (int j = 0; j < bin.length; j++) {						/*-*/ frame.Highlight(13);						for (int k = 0; k < bin[j].size(); k++) {								/*-*/ frame.Highlight(14);								a[i++] = bin[j].get(k);								/*-*/ frame.setText(1, "Extracting ball with value " + a[i-1] + " from bin " + j + "...");								/*-*/ frame.Highlight(15); drawingPanel.movefrombin(j, i-1);/*-*/frame.waitStep();						}					bin[j] = new IntList();					}				/*-*/frame.setText(0, "Execution completed successfully...");				/*-*/frame.setText(1, "Re-select data and click on the 'Run' button to restart...");				/*-*/frame.setText(2, "Close Window to quit...");				} // binsort()//----		public void run() {				drawingPanel.setData(a, bin);				binsort(a, bin);				// finish sorting				frame.finishAlg();		}		public void restoreDrawingPanel() {				drawingPanel.restoreBinColor();				frame.repaint();		}	 /**		 * This method is to be placed after the line where the fast		 * forward function is to be performed.		 */		public void waitSkip() {				if (!drawingPanel.getSkip()) return;				((ImageButton)frame.getSkipItem()).setEnable();				((ImageButton)frame.getRunItem()).setEnable();				((ImageButton)frame.getStopItem()).setDisable();				drawingPanel.setSkip(false);				frame.setStep(true);				frame.waitStep();		}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -