• 沒有找到結果。

第五章 發生的問題及心得

5.2 心得

我覺得專題的寫作目的,應該是要檢視我們在大學的四年內學到 了什麼東西,並且藉著這次的機會,將妳有興趣的部分在做更加一步 精進,這次我選擇了用 Java 來完成這次的專題,雖然是以前沒有接 觸過太多次的東西,但在這次完成專題的過程中,可以說是獲益良 多。雖然在 Java 程式的寫作上,還有很多東西需要再學習,但這也 算是已經跨出了第一步,接下來的就是藉著這次的經驗,自我再多做 練習。在這麼多優良的專題下,這份專題並不是很完美的,但我覺得,

我所得到知識和經驗,是不能衡量的,在寫 java code 的過程中,找 回了以前發現問題會自己去找出答案來的心情,當我有問題時,也確 切的感受到了朋友的關懷,所有的 code 都是一個字一個字慢慢敲出 來的。

另外免不了的要感謝一下指導教授黃溪春老師,因為我的起步算 晚的,但老師能在百忙中,還能抽出時間幫我看我的成品,很多時候 都覺得很不好意思。

參考書目

[1]柯溫釗編著,Java 學習經典,第三波,2000/12

[2]R.Allen Wyke&Donald B.Thomas 著,吳東賢譯,Perl 程式設計入門 手冊,美商麥格羅.希爾國際股份有限公司台灣分公司,2001/6 [3]黃國欽,最新 Java 程式設計入門與實作,松崗圖書,2002/5 [4]蔡明志,資料結構 使用 C 語言,碁峰,2002/6

附錄 A Bubble Sort 的 Applet 程式實作

Source Code

import java.awt.*;

import java.awt.event.*;

import java.io.InputStream;

import java.util.Hashtable;

import java.net.*;

import java.applet.*;

public class bubsort extends java.applet.Applet implements Runnable,MouseListener,ActionListener

{

static final String message = "Bubble Sort ";

static final String message1 = "Total Time(ms):";

static final String message2 = "Status:";

static final String message3 = "The ▼ item is biger then the yellow item. Exange!!!";

static final String message4 = "The ▼ item is smaller then the yellow item. Non-Exange!!!";

static final String message6 = "Times of comparing:";

static final String message7 = "Times of Exchage:";

static final String message8 = "Sorting Complete!!!";

static final String arrow = "▼";

static final String com1 = "is goal pointer.";

static final String com2 = "is Action pointer.";

static final String com3 = "is current cmparing Object.";

static final String message9 = "please enter 10 number for sort";

private Font ffont;

private Font fffont;

private Font bffont;

int h1=1;

int l1=0;

int[] ar=new int[ ]{100,100,100,100,100,100,100,100,100,100};

int ecount=0;

ffont=new Font ("arial",Font.BOLD,15);

fffont=new Font ("arial",Font.BOLD,20);

bffont=new Font ("arial",Font.BOLD,35);

start.addActionListener(this);

one=new Button("Step by step");

one.setBounds(700,10,100,30);

public void start() {

}

public void stop() {

algsort=null;

}

public void run() {

run=true;

initial=false;

sort(ar);

}

public void mouseClicked(MouseEvent e) {;}

public void mouseReleased(MouseEvent e) {;}

public void mouseEntered(MouseEvent e) {;}

public void mouseExited(MouseEvent e) {;}

public void mousePressed(MouseEvent e) {;}

public void paint(Graphics g) {

g.drawString(com2,320,45);

g.setFont(null);

g.setColor(Color.black);

g.drawString(arrow,300,65);

g.drawString(com3,320,65);

int tmp=0;

if(complete==true) {

g.setColor(Color.white);

g.fillRect(360,70,500,20);

g.setColor(Color.black);

g.setFont(ffont);

g.drawString(message8,360,85);

g.setColor(Color.black);

g.setFont(ffont);

g.drawString("Result:",500,370);

for (int i=0;i<ar.length;i++) {

k=100-ar[i];

s = String.valueOf(k);

g.drawString(s,500+30*i,390);

}

}else if(exg==true) {

g.setColor(Color.white);

g.fillRect(360,70,500,20);

g.setColor(Color.black);

g.setFont(ffont);

g.drawString(message3,360,85);

}else if(exg==false){

g.setColor(Color.white);

g.fillRect(360,70,500,20);

g.setColor(Color.black);

g.setFont(ffont);

g.drawString(message4,360,85);

}

g.setFont(fffont);

g.drawString(arrow,x-37,145+ar[i-1]*3);

}else{

g.setColor(Color.yellow);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.black);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.pink);

g.fillRect(x-40,150+ar[i-1]*3,20,300-ar[i-1]*3);

g.setColor(Color.black);

g.drawRect(x-40,150+ar[i-1]*3,20,300-ar[i-1]*3);

g.setFont(fffont);

g.drawString(arrow,x-37,145+ar[i-1]*3);

}

}

if(h1==i&&exg==false) {

g.setColor(Color.white);

g.fillRect(x,150,25,ar[i]*3);

g.setColor(Color.yellow);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.black);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setFont(fffont);

g.drawString(arrow,x-37,145+ar[i-1]*3);

}

if(l1==i) {

if(i!=l1+1) {

g.setColor(Color.white);

g.fillRect(x,150,25,ar[i]*3);

}

g.setColor(Color.blue);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.black);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

}

if(i!=h1&&i!=l1) {

if(i!=h1-1) {

g.setColor(Color.white);

g.fillRect(x,150,25,ar[i]*3);

}

g.setColor(Color.pink);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.black);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

}

x=x+40;

}

}

public void update(Graphics g) {

paint(g);

}

void pause() {

if (algsort != null) {

repaint();

}

try {Thread.sleep(600);} catch (InterruptedException e){}

}

void pause2()

{

if (algsort != null) {

repaint();

}

try {Thread.sleep(800);} catch (InterruptedException e){}

}

public void sort(int a[]) {

for (;tmpi<a.length;tmpi++ ) {

l1=tmpi;

for (tmpj = a.length-1; tmpj>tmpi; tmpj--) {

h1=tmpj;

exg=false;

pause2();

if (a[tmpj] > a[tmpj-1]) {

exg=true;

ecount=ecount+1;

int T = a[tmpj];

a[tmpj] = a[tmpj-1];

a[tmpj-1] = T;

}

counter=counter+1200;

count=count+1;

pause();

if(step==true) {

algsort.suspend();

}

}

}

complete=true;

l1=l1-1;

repaint();

}

public void actionPerformed(ActionEvent e) { Object src = e.getSource();

if( src==stop ) {

run=false;

algsort.suspend();

return;

}else if(src==start) {

run=true;

step=false;

if (algsort == null) {

algsort = new Thread(this);

algsort.start();

}else{

algsort.resume();

}

return;

}else if (src==one) {

step=true;

if (algsort == null) {

algsort = new Thread(this);

algsort.start();

}else

}

return;

}else if (src==ente) {

ar[0]=100-Integer.parseInt(text0.getText());

ar[1]=100-Integer.parseInt(text1.getText());

ar[2]=100-Integer.parseInt(text2.getText());

ar[3]=100-Integer.parseInt(text3.getText());

ar[4]=100-Integer.parseInt(text4.getText());

ar[5]=100-Integer.parseInt(text5.getText());

ar[6]=100-Integer.parseInt(text6.getText());

ar[7]=100-Integer.parseInt(text7.getText());

ar[8]=100-Integer.parseInt(text8.getText());

ar[9]=100-Integer.parseInt(text9.getText());

repaint();

} } }

附錄 B Selection Sort 的 Applet 程式實作

Source Code

import java.awt.*;

import java.awt.event.*;

import java.io.InputStream;

import java.util.Hashtable;

import java.net.*;

import java.applet.*;

public class sesort extends java.applet.Applet implements Runnable,MouseListener,ActionListener

{

static final String message = "Selection Sort ";

static final String message1 = "Total Time(ms):";

static final String message2 = "Status:";

static final String message3 = "Get the small one Exange!!!";

static final String message4 = "Find the small one";

static final String message8 = "Sorting Complete!!!";

static final String arrow = "▼";

static final String com1 = "is goal pointer.";

static final String com2 = "is Action pointer.";

static final String com3 = "is the small Object.";

static final String message9 = "please enter 10 number for sort";

private Font ffont;

private Font fffont;

private Font bffont;

int[] ar=new int[ ]{100,100,100,100,100,100,100,100,100,100};

int ecount=0;

boolean step=false;

ffont=new Font ("arial",Font.BOLD,15);

fffont=new Font ("arial",Font.BOLD,20);

bffont=new Font ("arial",Font.BOLD,35);

one=new Button("Step by step");

one.setBounds(700,10,100,30);

this.add(text2);

text3.setBounds(650,220,40,30);

this.add(text3);

text4.setBounds(600,250,40,30);

this.add(text4);

text5.setBounds(650,250,40,30);

this.add(text5);

text6.setBounds(600,280,40,30);

this.add(text6);

text7.setBounds(650,280,40,30);

this.add(text7);

text8.setBounds(600,310,40,30);

this.add(text8);

text9.setBounds(650,310,40,30);

this.add(text9);

}

Thread algsort=null;

public void start() {

}

public void stop() {

algsort=null;

}

public void run() {

run=true;

initial=false;

sort(ar);

}

public void mouseClicked(MouseEvent e) {;}

public void mouseReleased(MouseEvent e) {;}

public void mouseEntered(MouseEvent e) {;}

public void mouseExited(MouseEvent e) {;}

public void mousePressed(MouseEvent e) {;}

int x=100;

int y=100;

g.setColor(Color.black);

g.setFont(bffont);

g.drawString(message,10,30);

g.setFont(ffont);

g.drawString(message1,10,50);

g.setFont(ffont);

g.drawString(message2,300,85);

g.setFont(ffont);

g.drawString(message6,10,70);

g.setFont(ffont);

g.drawString(message7,10,90);

g.setFont(ffont);

g.drawString(message9,550,130);

g.setFont(ffont);

g.drawString(message10,550,150);

g.setFont(null);

g.setColor(Color.blue);

g.drawString(arrow,300,25);

g.setFont(ffont);

g.setColor(Color.black);

g.drawString(com1,320,25);

g.setFont(null);

g.setColor(Color.yellow);

g.drawString(arrow,300,45);

g.setFont(ffont);

g.setColor(Color.black);

g.drawString(com2,320,45);

g.setColor(Color.blue);

g.fillRect(300,55,15,15);

g.setColor(Color.black);

g.drawString(com3,320,65);

int tmp=0;

g.setColor(Color.white);

g.setFont(ffont);

g.drawString(si,200,70);

ii=String.valueOf(ecount);

g.setColor(Color.white);

g.fillRect(200,70,100,20);

g.setColor(Color.black);

g.setFont(ffont);

g.drawString(ii,200,90);

for(int i=0;i<ar.length;i++) {

g.setColor(Color.white);

g.fillRect(x,130,90,20);

if (i==h1&&i==s1) {

g.setColor(Color.white);

g.fillRect(x,150,25,400);

g.setColor(Color.blue);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.black);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.yellow);

g.setFont(fffont);

g.drawString(arrow,x,145+ar[i]*3);

}else if(i==l1&&i==s1) {

g.setColor(Color.white);

g.fillRect(x,150,25,400);

g.setColor(Color.blue);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.black);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.blue);

g.setFont(fffont);

g.drawString(arrow,x,145+ar[i]*3);

}else if (i==h1&&i==l1)

g.fillRect(x,150,25,400);

g.setColor(Color.blue);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.black);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

} else {

g.setColor(Color.white);

g.fillRect(x,150,25,400);

g.setColor(Color.pink);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.black);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

}

x=x+40;

}

}

public void update(Graphics g) {

paint(g);

}

void pause() {

if (algsort != null) {

repaint();

}

try {Thread.sleep(600);} catch (InterruptedException e){}

}

void pause2() {

if (algsort != null) {

try {Thread.sleep(800);} catch (InterruptedException e){}

}

public void sort(int a[]) {

for (;tmpi<a.length;tmpi++ ) {

if( src==stop ) {

run=false;

algsort.suspend();

return;

}else if(src==start) {

run=true;

step=false;

if (algsort == null) {

algsort = new Thread(this);

algsort.start();

}else{

algsort.resume();

}

return;

}else if (src==one) {

step=true;

if (algsort == null) {

algsort = new Thread(this);

algsort.start();

}else {

algsort.resume();

}

return;

}else if (src==ente) {

ar[0]=100-Integer.parseInt(text0.getText());

ar[1]=100-Integer.parseInt(text1.getText());

ar[2]=100-Integer.parseInt(text2.getText());

ar[3]=100-Integer.parseInt(text3.getText());

ar[4]=100-Integer.parseInt(text4.getText());

ar[7]=100-Integer.parseInt(text7.getText());

ar[8]=100-Integer.parseInt(text8.getText());

ar[9]=100-Integer.parseInt(text9.getText());

repaint();

}

}

}

附錄 C Insertion Sort 的 Applet 程式實作

Source Code

import java.awt.*;

import java.awt.event.*;

import java.io.InputStream;

import java.util.Hashtable;

import java.net.*;

import java.applet.*;

public class insort extends java.applet.Applet implements Runnable,MouseListener,ActionListener

{

static final String message = "Insertion Sort ";

static final String message1 = "Total Time(ms):";

static final String message2 = "Status:";

static final String message3 = "The blue item is smailler then the

▼ item. Exange!!!";

static final String message4 = "The blue item is biger then the ▼ item. Non-Exange!!!";

static final String message6 = "Times of comparing:";

static final String arrow = "▼";

static final String com1 = "is goal pointer.";

static final String com2 = "is Action pointer.";

static final String com3 = "is current cmparing Object.";

static final String message9 = "please enter 10 number for sort";

private Font ffont;

private Font fffont;

private Font bffont;

int[] ar=new int[ ]{100,100,100,100,100,100,100,100,100,100};

int ecount=0;

boolean step=false;

ffont=new Font ("arial",Font.BOLD,15);

fffont=new Font ("arial",Font.BOLD,20);

bffont=new Font ("arial",Font.BOLD,35);

one=new Button("Step by step");

one.setBounds(700,10,100,30);

this.add(text2);

text3.setBounds(650,220,40,30);

this.add(text3);

text4.setBounds(600,250,40,30);

this.add(text4);

text5.setBounds(650,250,40,30);

this.add(text5);

text6.setBounds(600,280,40,30);

this.add(text6);

text7.setBounds(650,280,40,30);

this.add(text7);

text8.setBounds(600,310,40,30);

this.add(text8);

text9.setBounds(650,310,40,30);

this.add(text9);

}

Thread algsort=null;

public void start() {

}

public void stop() {

algsort=null;

}

public void run() {

run=true;

initial=false;

sort(ar);

}

public void mouseClicked(MouseEvent e) {;}

public void mouseReleased(MouseEvent e) {;}

public void mouseEntered(MouseEvent e) {;}

public void mouseExited(MouseEvent e) {;}

public void mousePressed(MouseEvent e) {;}

int x=100;

int y=100;

g.setColor(Color.black);

g.setFont(bffont);

g.drawString(message,10,30);

g.setFont(ffont);

g.drawString(message1,10,50);

g.setFont(ffont);

g.drawString(message2,300,85);

g.setFont(ffont);

g.drawString(message6,10,70);

g.setFont(ffont);

g.drawString(message7,10,90);

g.setFont(ffont);

g.drawString(message9,550,130);

g.setFont(ffont);

g.drawString(message10,550,150);

g.setColor(Color.blue);

g.fillRect(300,15,15,15);

g.setFont(ffont);

g.setColor(Color.black);

g.drawString(com1,320,25);

g.setColor(Color.yellow);

g.fillRect(300,35,15,15);

g.setFont(ffont);

g.setColor(Color.black);

g.drawString(com2,320,45);

g.setFont(null);

g.setColor(Color.black);

g.drawString(arrow,300,65);

g.drawString(com3,320,65);

int tmp=0;

if(complete==true) {

g.setColor(Color.black);

ii=String.valueOf(ecount);

}

}

public void update(Graphics g) {

paint(g);

}

void pause() {

if (algsort != null) {

repaint();

}

try {Thread.sleep(600);} catch (InterruptedException e){}

}

void pause2() {

if (algsort != null) {

repaint();

}

try {Thread.sleep(800);} catch (InterruptedException e){}

}

public void sort(int a[]) {

for (;tmpi<a.length;tmpi++) {

l1=tmpi;

tmpda=a[tmpi];

exg = false;

for (tmpj=tmpi-1;tmpj>=0&&tmpda > a[tmpj];

tmpj--)

{

h1 = tmpj;

pause2();

count = count + 1;

ecount = ecount + 1;

a[tmpj + 1] = a[tmpj];

}

a[tmpj + 1] = tmpda;

h1=l1-1;

counter = counter + 600;

count = count + 1;

pause();

if (step == true) { algsort.suspend();

} }

complete=true;

repaint();

}

public void actionPerformed(ActionEvent e) { Object src = e.getSource();

if( src==stop ) {

run=false;

algsort.suspend();

return;

}else if(src==start) {

run=true;

step=false;

if (algsort == null) {

algsort = new Thread(this);

algsort.start();

}else{

algsort.resume();

}

return;

}else if (src==one)

step=true;

if (algsort == null) {

algsort = new Thread(this);

algsort.start();

}else {

algsort.resume();

}

return;

}else if (src==ente) {

ar[0]=100-Integer.parseInt(text0.getText());

ar[1]=100-Integer.parseInt(text1.getText());

ar[2]=100-Integer.parseInt(text2.getText());

ar[3]=100-Integer.parseInt(text3.getText());

ar[4]=100-Integer.parseInt(text4.getText());

ar[5]=100-Integer.parseInt(text5.getText());

ar[6]=100-Integer.parseInt(text6.getText());

ar[7]=100-Integer.parseInt(text7.getText());

ar[8]=100-Integer.parseInt(text8.getText());

ar[9]=100-Integer.parseInt(text9.getText());

repaint();

}

}

}

附錄 D Quick Sort 的 Applet 程式實作

Source Code

import java.awt.*;

import java.awt.event.*;

import java.io.InputStream;

import java.util.Hashtable;

import java.net.*;

public class qusort extends java.applet.Applet implements Runnable,MouseListener,ActionListener

{

static final String message = "Quick Sort ";

static final String message1 = "Total Time(ms):";

static final String message2 = "Status:";

static final String message3 = "To find the item which is smaller then blue item";

static final String message4 = "To find the item which is biger then blue item";

static final String message6 = "Times of comparing:";

static final String message7 = "Times of Exchage:";

static final String message8 = "Sorting Complete!!!";

static final String message11 = "Exange!!!";

static final String arrow = "▼";

static final String com1 = "is the pointer to find big one";

static final String com2 = "is the pointer to find small one";

static final String com3 = "is the compare one";

static final String message9 = "please enter 10 number for sort";

private Font ffont;

private Font fffont;

private Font bffont;

int h1=0;

int x=0;

int[] ar=new int[ ]{100,100,100,100,100,100,100,100,100,100};

int ecount=0;

ffont=new Font ("arial",Font.BOLD,15);

fffont=new Font ("arial",Font.BOLD,20);

bffont=new Font ("arial",Font.BOLD,35);

start.addActionListener(this);

one=new Button("Step by step");

one.setBounds(700,10,100,30);

public void start() {

}

public void stop() {

algsort=null;

}

run=true;

initial=false;

sort(ar,0,9);

}

public void mouseClicked(MouseEvent e) {;}

public void mouseReleased(MouseEvent e) {;}

public void mouseEntered(MouseEvent e) {;}

public void mouseExited(MouseEvent e) {;}

public void mousePressed(MouseEvent e) {;}

public void paint(Graphics g) {

int x=100;

int y=100;

g.setColor(Color.black);

g.setFont(bffont);

g.drawString(message,10,30);

g.setFont(ffont);

g.drawString(message1,10,50);

g.setFont(ffont);

g.drawString(message2,300,85);

g.setFont(ffont);

g.drawString(message6,10,70);

g.setFont(ffont);

g.drawString(message7,10,90);

g.setFont(ffont);

g.drawString(message9,550,130);

g.setFont(ffont);

g.drawString(message10,550,150);

g.setFont(null);

g.setColor(Color.black);

g.drawString(arrow,300,25);

g.setFont(ffont);

g.setColor(Color.black);

g.drawString(com1,320,25);

g.setFont(null);

g.setFont(ffont);

g.setColor(Color.black);

g.drawString(com2,320,45);

g.setColor(Color.blue);

g.fillRect(300,55,15,15);

g.setColor(Color.black);

g.drawString(com3,320,65);

int tmp=0;

if(complete==true) {

g.setColor(Color.white);

g.fillRect(360,70,500,20);

g.setColor(Color.black);

g.setFont(ffont);

g.drawString(message8,360,85);

g.setColor(Color.black);

g.setFont(ffont);

g.drawString("Result:",500,370);

for (int i=0;i<ar.length;i++) {

k=100-ar[i];

s = String.valueOf(k);

g.drawString(s,500+30*i,390);

}

}else if(exg==true) {

g.setColor(Color.white);

g.fillRect(360,70,500,20);

g.setColor(Color.black);

g.setFont(ffont);

g.drawString(message11,360,85);

}else if(comps==true) {

g.setColor(Color.black);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setFont(fffont);

g.drawString(arrow,x,145+ar[i]*3);

}else if (i==m1) {

g.setColor(Color.white);

g.fillRect(x,150,25,400);

g.setColor(Color.blue);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.black);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

}else {

g.setColor(Color.white);

g.fillRect(x,150,25,400);

g.setColor(Color.pink);

g.fillRect(x,150+ar[i]*3,20,300-ar[i]*3);

g.setColor(Color.black);

g.drawRect(x,150+ar[i]*3,20,300-ar[i]*3);

}

x=x+40;

}

}

public void update(Graphics g) {

paint(g);

}

void pause() {

if (algsort != null) {

repaint();

}

try {Thread.sleep(600);} catch (InterruptedException e){}

}

if (algsort != null) {

repaint();

}

try {Thread.sleep(800);} catch (InterruptedException e){}

}

public void sort(int a[],int fir,int fin) {

pause2();

else if(l1==9)

public void actionPerformed(ActionEvent e) { Object src = e.getSource();

if( src==stop ) {

algsort = new Thread(this);

algsort.start();

algsort = new Thread(this);

algsort.start();

}else if (src==ente) {

ar[0]=100-Integer.parseInt(text0.getText());

ar[3]=100-Integer.parseInt(text3.getText());

ar[4]=100-Integer.parseInt(text4.getText());

ar[5]=100-Integer.parseInt(text5.getText());

ar[6]=100-Integer.parseInt(text6.getText());

ar[7]=100-Integer.parseInt(text7.getText());

ar[8]=100-Integer.parseInt(text8.getText());

ar[9]=100-Integer.parseInt(text9.getText());

repaint();

} } }

附錄 E 測驗題的實作

#!/usr/bin/perl -w

print "content-type:text/html\n\n";

print "<html>";

print "<meta http-equiv=\"Content-Type\" content=\"text/html\; charset=big5\">";

print "<head>";

print "<title>Test html</title>";

print "</head>";

print "<body bgcolor=\"#FFFF99\">";

print "<H1>排序測驗</H1>";

print "<form method=\"post\" action=\"ans.pl\">";

$k=int(rand(15));

$i=0;

$z=$k;

for ($i=0;$i<4;$i++) {

$k=$k%15;

if ($k==0) {

print "<p>59,28,77,31,51,11 以插入排序法 排序由小到大 pass3 的結果 應該是?</p>\n";

print "<input type=\"hidden\" name=\"quest0\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio0\" value=\"1\">";

print "11,59,28,77,31,51</p>\n";

print "<p><input type=\"radio\" name=\"radio0\" value=\"3\">";

print "11,28,77,31,51,59</p>\n\n";

}

if ($k==1) {

print "<p>59,28,77,31,51,11 以選擇排序法 排序由小到大 pass3 的結果 應該是?</p>\n";

print "<input type=\"hidden\" name=\"quest1\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio1\" value=\"1\">";

print "28,31,59,77,51,11</p>\n";

print "<p><input type=\"radio\" name=\"radio1\" value=\"2\">";

print "11,59,28,77,31,51</p>\n";

print "<p><input type=\"radio\" name=\"radio1\" value=\"3\">";

print "11,28,77,31,51,59</p>\n\n";

}

if ($k==2) {

print "<p>59,28,77,31,51,11 以泡沫排序法 排序由小到大 pass3 的結果 應該是?</p>\n";

print "<input type=\"hidden\" name=\"quest2\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio2\" value=\"1\">";

print "28,31,59,77,51,11</p>\n";

print "<p><input type=\"radio\" name=\"radio2\" value=\"2\">";

print "11,59,28,77,31,51</p>\n";

print "<p><input type=\"radio\" name=\"radio2\" value=\"3\">";

print "11,28,77,31,51,59</p>\n\n";

}

if ($k==3) {

print "<p>下列何種排序法的時間複雜度為 O(n log n)</p>\n";

print "<input type=\"hidden\" name=\"quest3\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio3\" value=\"1\">";

print "選擇排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio3\" value=\"2\">";

print "快速排序法</p>\n";

}

if ($k==4) {

print "<p>59,28,77,31,51,11 以快速排序法 排序並以第一筆資料為基準 則 pass1 的結果應該是?</p>\n";

print "<input type=\"hidden\" name=\"quest4\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio4\" value=\"1\">";

print "51,28,11,31,59,77</p>\n";

print "<p><input type=\"radio\" name=\"radio4\" value=\"2\">";

print "28,59,77,31,51,11</p>\n";

print "<p><input type=\"radio\" name=\"radio4\" value=\"3\">";

print "11,59,28,77,31,51</p>\n\n";

print "<input type=\"hidden\" name=\"quest5\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio5\" value=\"1\">";

print "泡沫排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio5\" value=\"2\">";

print "插入排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio5\" value=\"3\">";

print "快速排序法</p>\n\n";

print "<input type=\"hidden\" name=\"quest6\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio6\" value=\"1\">";

print "選擇排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio6\" value=\"2\">";

print "快速排序法</p>\n\n";

print "<input type=\"hidden\" name=\"quest7\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio7\" value=\"1\">";

print "選擇排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio7\" value=\"2\">";

print "泡沫排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio7\" value=\"3\">";

print "插入排序法</p>\n\n";

}

if ($k==8) {

print "<p>N 個資料作氣泡排序時,須經過幾次比較?</p>\n";

print "<input type=\"hidden\" name=\"quest8\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio8\" value=\"1\">";

print "N(N-1)/2</p>\n";

print "<p><input type=\"radio\" name=\"radio8\" value=\"2\">";

print "N/2</p>\n";

print "<p><input type=\"radio\" name=\"radio8\" value=\"3\">";

print "N(N+1)/2</p>\n\n";

print "<input type=\"hidden\" name=\"quest9\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio9\" value=\"1\">";

print "泡沫排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio9\" value=\"2\">";

print "選擇排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio9\" value=\"3\">";

if ($k==10) {

print "<p>下列關於氣泡排序法的敘述中,哪一個是錯誤的?</p>\n";

print "<input type=\"hidden\" name=\"quest10\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio10\" value=\"1\">";

print "在每一次的排列循環後,一定會有一個正確的資料會被置於正確 的位置</p>\n";

print "<p><input type=\"radio\" name=\"radio10\" value=\"2\">";

print "若排列 10 筆資料,最多須做 9 次的排列循環</p>\n";

print "<p><input type=\"radio\" name=\"radio10\" value=\"3\">";

print "適用於資料筆數很多的情況下</p>\n\n";

print "<input type=\"hidden\" name=\"quest11\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio11\" value=\"1\">";

print "泡沫排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio11\" value=\"2\">";

print "選擇排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio11\" value=\"3\">";

print "插入排序法</p>\n\n";

}

if ($k==12) {

print "<p>利用氣泡排序法排列 10 筆資料的順序,須經過幾次的比較?

</p>\n";

print "<input type=\"hidden\" name=\"quest12\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio12\" value=\"1\">";

print "45 次</p>\n";

print "<p><input type=\"radio\" name=\"radio12\" value=\"2\">";

print "30 次</p>\n";

print "<p><input type=\"radio\" name=\"radio12\" value=\"3\">";

if ($k==13) {

print "<p>利用插入排序法排列 10 筆資料的順序,最多做幾次的排序循 環?</p>\n";

print "<input type=\"hidden\" name=\"quest13\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio13\" value=\"1\">";

print "5 次</p>\n";

print "<p><input type=\"radio\" name=\"radio13\" value=\"2\">";

print "10 次</p>\n";

print "<p><input type=\"radio\" name=\"radio13\" value=\"3\">";

print "20 次</p>\n\n";

}

if ($k==14) {

print "<p>以第一筆資料作為基準,將資料分為大於第一筆資料,與小 於第一筆資料,兩個區塊,在分別對兩個區塊重複做相同的動作,此種方法稱 為?</p>\n";

print "<input type=\"hidden\" name=\"quest14\" value=\"1\">";

print "<p><input type=\"radio\" name=\"radio14\" value=\"1\">";

print "選擇排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio14\" value=\"2\">";

print "插入排序法</p>\n";

print "<p><input type=\"radio\" name=\"radio14\" value=\"3\">";

print "快速排序法</p>\n\n";

}

$k=$k+2;

}

print "<input type=\"submit\" name=\"Submit\" value=\"OK\">";

print "</from>";

print "</body>";

print "</html>";

附錄 F 解答的實作

#!/usr/bin/perl -w

print "content-type:text/html\n\n";

print "<head>";

print "<title>Test html</title>";

print "</head>";

print "<body bgcolor=\"#FFFF99\">";

print "<H1>排序解答</H1>";

&GetInput;

if ($in{'quest0'}==1) {

print "59,28,77,31,51,11 以插入排序法 排序由小到大 pass3 的結果應該 是?<br>";

print "28,31,59,77,51,11<br>";

print "11,59,28,77,31,51<br>";

print "11,28,77,31,51,59<br>";

if ($in{'radio0'}==1) {

print "恭喜答對囉!!!正確答案果然是 1<br><br>"

} else {

print "喔喔 抱歉..正確答案應該是 1<br><br>"

}

}

if ($in{'quest1'}==1) {

print "59,28,77,31,51,11 以選擇排序法 排序由小到大 pass3 的結果應該 是?<br>";

print "28,31,59,77,51,11<br>";

print "11,59,28,77,31,51<br>";

print "11,28,77,31,51,59<br>";

if ($in{'radio1'}==3) {

print "恭喜答對囉!!!正確答案果然是 3<br><br>"

} else {

}

if ($in{'quest2'}==1) {

print "59,28,77,31,51,11 以泡沫排序法 排序由小到大 pass3 的結果應該 是?<br>";

print "28,31,59,77,51,11<br>";

print "11,59,28,77,31,51<br>";

print "11,28,77,31,51,59<br>";

if ($in{'radio2'}==2) {

print "恭喜答對囉!!!正確答案果然是 2<br><br>"

} else {

print "喔喔 抱歉..正確答案應該是 2<br><br>"

}

}

if ($in{'quest3'}==1) {

print "下列何種排序法的時間複雜度為 O(n log n)<br>";

print "選擇排序法<br>";

print "快速排序法<br>";

print "泡沫排序法<br>";

if ($in{'radio3'}==2) {

print "恭喜答對囉!!!正確答案果然是 2<br><br>"

} else {

print "喔喔 抱歉..正確答案應該是 2<br><br>"

}

}

if ($in{'quest4'}==1)

pass1 的結果應該是?<br>";

pass1 的結果應該是?<br>";

在文檔中 網路教學網站-排序法 (頁 33-89)

相關文件