/********************/ /* 直接選択ソート */ /********************/ import java.awt.*; import java.util.Random; public class algossort extends java.applet.Applet implements Runnable { Image sc1,sc2; Graphics g_sc1,g_sc2; int i,j,k,w,n,cpn,exn; int data[]=new int[32]; int sorted[]=new int[32]; boolean go,doing; Thread runner; Random rnd=new Random(); Button go_b,clear16_b,clear32_b; Label cpL,exL; public void init(){ resize(320,300); setBackground(Color.green); setFont(new Font("TimesRoman",Font.PLAIN,12)); sc1=createImage(194,97); /* データ表示用イメージ */ g_sc1=sc1.getGraphics(); sc2=createImage(194,97); /* ソート表示用イメージ */ g_sc2=sc2.getGraphics(); this.setLayout((LayoutManager)null); go_b=new Button("Sort"); /* ソート実行ボタン */ add(go_b); go_b.setBounds(8,232,80,28); clear16_b=new Button("Clear(n=16)"); /* 16個のデータでクリア */ add(clear16_b); clear16_b.setBounds(108,210,128,28); clear32_b=new Button("Clear(n=32)"); /* 32個のデータでクリア */ add(clear32_b); clear32_b.setBounds(108,256,128,28); cpL=new Label("Compare "); /* 比較回数表示用のラベル */ add(cpL); cpL.setBounds(204,128,96,24); cpL.setBackground(Color.green); exL=new Label("Exchange "); /* 交換回数表示用のラベル */ add(exL); exL.setBounds(204,160,96,24); exL.setBackground(Color.green); screenClear(sc1); screenClear(sc2); n=16; /* 最初に16個のデータを作り表示する */ dataMake(); if (runner==null) { runner=new Thread(this); runner.start(); } } public void stop() { if (runner!=null) { runner.stop(); runner=null; } } public void screenClear(Image sc) { /* イメージをクリア */ Graphics g_sc=sc.getGraphics(); g_sc.setColor(Color.white); g_sc.fillRect(0,0,193,96); g_sc.setColor(Color.black); g_sc.drawRect(0,0,193,96); } public void dataMake() { /* 乱数でデータ作成 */ for (i=0;i