作業一的常見問題與建議

4 views
Skip to first unread message

雞排

unread,
Mar 18, 2010, 12:27:58 AM3/18/10
to SJ10-Algorithm
上學期資料結構的第一個作業也是排序
這兩次排序作業改完後, 一些問題還是重複發生

常見問題:
1. 作不同排序時,用一樣的陣列去排, 也就是說只要做了某一種排序之後,
其他排序都是用已排序的陣列去排

一種比較直覺的解決方式是:
假設裝亂數資料的陣列為int data[n];
每次一執行某種排序前, 先做複製資料的動作, 排序即使用複製資料去作
int copyData[n];
for(int i=0; i<n; i++) copyData[i] = data[i];

/*
拿copyData作排序
*/

2. 應該要讓使用者選擇是否要印出資料! 不然資料量大的時候要等好久...

一種直覺的解決方式:
拉出一個CheckBox元件
當使用者點下按鈕產生亂數資料或作排序
可寫以下程式碼偵測使用者是否有把CheckBox打勾
if(CheckBox1->Checked)// 有打勾
{
/*
印資料
*/
}
else// 沒打勾
{
/*
不印資料
*/
}

設計這樣的功能, 好處在於:
當你想看你的程式是否有正確把資料作排序時
可以將CheckBox打勾, 把資料印出來看是否已排序
如你想要測好幾十萬筆的資料, 看看到底花了多少時間
可以將CheckBox取消勾選, 不用一直等程式印資料

----------------------------------

一些寫程式上的小建議:
1. 資料陣列的大小由動態產生佳, 逼不得已才用寫死的
2. 亂數資料的範圍由使用者自行設定佳
3. 程式碼不要擠擠在一起 (我想何祖鳳老師在程設課時一定有提過)
4. 變數的命名儘量要有意義
5. 寫一些註解絕對有幫助
6. 元件上的顯示文字要有意義
有看過一個case是, Form上4顆按鈕, 分別顯示是Button1~Button4...
7. 如有讓使用者輸入資料的元件, 顯示預設值會比較好


最後是關於作業的資料夾
希望以後不要壓縮檔一解開, 就跑出一堆沒被資料夾包住的程式檔...
也就是希望大家都能照這樣做:
12345678_哀木涕_資二乙.rar
解開之後會是一個名為12345678_哀木涕_資二乙的資料夾
資料夾內才是程式檔
這樣我比較好處理大量的作業
由於moodle收作業非常非常麻煩
如大家都依照命名規則替作業命名
以及用資料夾把程式檔包起來
會替我省下不少時間
否則光下載作業到硬碟+整理每個人的繳交時間+解壓縮作業
就要超過一小時了...

雞排

Reply all
Reply to author
Forward
0 new messages