2008年11月20日 星期四

QuickSort using C++

QuickSort:一種遞迴技術的排序

(a) 分割步驟:選取未經過排序陣列的第一個元素,並決定它經過排序之後的陣列中的最後位置。

假設此陣列未經排序的第一個元素為21
21 32 5 67 0 12 4 23 53 14

經過排序後,我們找到21在陣列中的最後位置。
12 4 5 14 0 21 67 53 32 23

換句話說,以21為基準,其左邊的所有元素值皆小於它,右邊的所有元素值皆大於它。

我們因此可以將此陣列分成兩個子陣列。
子陣列I:12, 4, 5, 14, 0 (左邊 五個元素)
子陣列II: 67, 53, 32, 23 (右邊 四個元素)

(b) 遞回步驟:對每個位排序的子陣列,執行步驟(a)

(b1)每次對子陣列執行步驟(a)時,必會找到一個元素放在排序過陣列的最後位置上。{同上述(a)之解釋 keypoint: 把21 32 5 67 0 12 4 23 53 14 視為一個子陣列}

(b2)當子陣列由一個元素所組成時,則此唯一個元素必是已經排序過的,因此,這個元素已位在它最後的位置上。

我們如何決定每個子陣列第一個元素的最終位置呢?
EX:
37 2 6 4 89 8 10 12 68 45

(A)從陣列最右邊的元素開始,將每個元素與37比較,直到找出某個小於37的元素。然後將37和這個元素作交換。第一個比37小的元素是12,因此,37會和12交換。
12 2 6 4 89 8 10 37 68 45

(B)從陣列最左邊開始,但是在元素12之後,將每個元素與37比較,直到找到比37大的元素為止。

參考資料: C++程式設計藝術 第四版 DEITEL&DEITEL, Pearson

2008年7月17日 星期四

Partial class

*部份類別(Partial classes) .NET Compact Framework 2.0 的新功能 :
*可在不同的原始程式碼檔案宣告 partial classes, 只要宣告在同一個 「命名空間」和「組件即可」
*在編譯時期, 編譯器會自動將分散於各處的 partial classes 組合成所屬的單一類別

資料來源: Windows Mobile 6 應用程式設計與操控實務(博碩出版)

[圖1]在資料夾 DeviceApplication7 --> Class1.cs 宣告一partial class 叫做 Toyota

[圖2]在資料夾 DeviceApplication7 --> Class2.cs 宣告一partial class 叫做 Toyota

[圖3]放到主程式作執行測試

[圖4]執行結果 ok!


[圖5]錯誤用法

第一支 Mobile 6.0 程式

[圖1]點選螢幕

[圖2]加入簡易程式

[圖3]執行

[圖4]點選按鈕的部份

[圖5]加入程式並執行


可以比較[圖1]和[圖3]兩個方法的不同處