//www.configure-all.com //Author: Sergey Skudaev //Binary Merge Sort Algorithm Demo //Copyright by Sergey Skudaev. All right reserved import java.applet.*; import java.awt.*; import java.awt.event.*; public class BinMerge extends Applet implements ActionListener, Runnable { char charArr[]; String input; int last; int cell =1; String Svoid; Thread thread; boolean equalFlag = false; String [] arr = {"61", "21", "71", "31", "91", "41", "99", "33", "19", "18", "10", "15", "11", "14","13", "12"}; Font f; private Button[] btnCh = new Button[16]; private Button[] btn1 = new Button[8]; private Button[] btn2 = new Button[8]; Button btnInput; Panel pbtn; Panel ptCh; Panel psec; Panel pcom; Panel pbase, pinput; public void init() { setLayout(new BorderLayout()); Svoid = new String(" "); pbtn = new Panel(); psec = new Panel(); psec.setLayout(new FlowLayout()); pcom = new Panel(); pinput = new Panel(); pinput.setLayout(new FlowLayout()); pcom.setLayout(new BorderLayout()); pbtn.setLayout(new FlowLayout()); ptCh = new Panel(); f = new Font("SanSerif", Font.BOLD, 20); ptCh.setLayout(new FlowLayout()); pbase = new Panel(); pbase.setLayout(new BorderLayout()); for(int i = 0; i <16; i++) btnCh[i] = new Button(arr[i]); for(int l=0; l< 8;l++) { btn2[l] = new Button(" "); btn1[l] = new Button(" "); } btnInput = new Button("Sort"); btnInput.addActionListener(this); pinput.add(btnInput); last = btnCh.length; ptCh.add(btnCh[0]); ptCh.add(btnCh[1]); ptCh.add(btnCh[2]); ptCh.add(btnCh[3]); ptCh.add(btnCh[4]); ptCh.add(btnCh[5]); ptCh.add(btnCh[6]); ptCh.add(btnCh[7]); ptCh.add(btnCh[8]); ptCh.add(btnCh[9]); ptCh.add(btnCh[10]); ptCh.add(btnCh[11]); ptCh.add(btnCh[12]); ptCh.add(btnCh[13]); ptCh.add(btnCh[14]); ptCh.add(btnCh[15]); psec.add(btn2[0]); psec.add(btn2[1]); psec.add(btn2[2]); psec.add(btn2[3]); psec.add(btn2[4]); psec.add(btn2[5]); psec.add(btn2[6]); psec.add(btn2[7]); pbtn.add(btn1[0]); pbtn.add(btn1[1]); pbtn.add(btn1[2]); pbtn.add(btn1[3]); pbtn.add(btn1[4]); pbtn.add(btn1[5]); pbtn.add(btn1[6]); pbtn.add(btn1[7]); pcom.add(ptCh, BorderLayout.NORTH); pcom.add(psec, BorderLayout.SOUTH); pbase.add(pcom, BorderLayout.NORTH); pbase.add(pbtn, BorderLayout.SOUTH); add(pbase, BorderLayout.NORTH); add(pinput, BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e) { if(e.getSource() == btnInput) run(); } public void run() { recursive_merge(); } public void recursive_merge() { int current = 0; int new_current = 0; if(cell <= 8) { while(current < last) { try { Thread.sleep(2000); } catch(InterruptedException e) { } for(int i = 0; i< cell; i++) { btn1[new_current + i].setLabel(btnCh[current + i].getLabel()); btn1[new_current + i].setBackground(Color.yellow); } current = current + cell; for(int j = 0; j