- 1、本文档共131页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
19 资料结构
第九章 資料結構
9-1 資料結構化應考慮的因素
9-2 陣列(Dimension)
9-3 堆 疊
9-4 搜 尋
9-5 內部排序
9-6 外部排序法
當程式所須處理的資料量非常龐大,為了有效運用記憶體及縮短執行次數,程式設計者必須嘗試各種演算法,以求得最佳的演算次數及記憶體安排,如何求得較佳的演算法及較佳的執行次數此一課題稱為資料結構,而巿面上的資料結構叢書大多匯整近百年數學家苦思而來的精彩方法科學供後人揣摩,讀者應以此為範本,精益求精應用於程式設計領域,而不是閉門造車,苦思一些前人早已發表的方法而洋洋得意,就如同電燈早已是十八世紀的產品,讀者千萬不要再研究如何發明電燈,而是去研讀電燈的原理,進而從此原理探討更加省電或更亮的燈泡。
資料結構乃是程式設計者必修的三學分課程,本書乃截取最精華最基礎的方法供讀者研習,希望有助於讀者啟發邏輯思考。
VB的一個缺憾為無指標型態(Pointer),故本章並無談及資料結構中的指標型態。
9-1 資料結構化應考慮的因素
當針對某特定問題時,如何將資料結構化,並選擇一種最有利於作業系統處理的模式,通常需考慮下列六項因素:
(1) 資料數量的多寡。
(2) 資料的使用次數和方法(Access Frequency)。
(3) 資料的性質是動態性質或是靜態性質。
(4) 資料結構化後需要多少的儲存容量。
(5) 存取結構化後的資料所需花費的時間。
(6) 容易程式化否。
以下我們將舉2個例子用演算法分析來說明各種結構所須的執行時間與佔用記憶體的多寡。
範例9-1A 成績計算
方法一:用一維陣列,其演算法如下
目 的
使學生了解資料結構的技巧。
輸 入
依序輸入學生姓名、座號、國文、英文、數學成績。
輸 出
1.每個人的各科平均。
2.每科全班各科平均。
變 數
1、A(0)、A(1)、A(2)、A(3)、A(4)、A(5) 第1個學生姓名、座號、國文、英文、數學成績、個人的各科平均。
2、B(0)、B(1),B(2)、B(3)、B(4)、B(5) 第2個學生姓名、座號、國文、英文、數學成績、個人的各科平均。
3、C(0)、C(1)、C(2)、C(3)、C(4)、C(5) 第3個學生姓名、座號、國文、英文、數學成績、個人的各科平均。
程式列印
Rem 9_1A_1
Dim db As Database
Dim rec As Recordset
Private Sub Form_Load()
Dim a(6) As Variant
Dim b(6) As Variant
Dim c(6) As Variant
Dim d(6) As Variant
Set db = OpenDatabase(c:\vbbook2\test1.mdb)
Set rec = db.OpenRecordset(訊一善月考成績)
a(0) = rec(0): a(1) = rec(1): a(2) = rec(2): a(3) = rec(4): a(4) = rec(4)
rec.MoveNext
b(0) = rec(0): b(1) = rec(1): b(2) = rec(2): b(3) = rec(4): b(4) = rec(4)
rec.MoveNext
c(0) = rec(0): c(1) = rec(1): c(2) = rec(2): c(3) = rec(4): c(4) = rec(4)
rec.MoveNext
a(5) = Int((a(2) + a(3) + a(4)) / 3)
b(5) = Int((b(2) + b(3) + b(4)) / 3)
c(5) = Int((c(2) + c(3) + c(4)) / 3)
d(1) = 平均
d(2) = Int((a(2) + b(2) + c(2)) / 3)
d(3) = Int((a(3) + b(3) + c(3)) / 3)
d(4) = Int((a(4) + b(4) + c(4)) / 3)
d(5) = Int((a(5) + b(5) + c(5)) / 3)
Debug.Print a(0); a(1); a(2); a(3); a(4); a(5)
Debug.Print b(0); b(1); b(2); b(3); b(4); b(5)
Debug.Print c(0); c(1); c(2); c(3); c(4); c(5)
Debug.Print d(1); d(2); d(3); d(4); d(5)
End
文档评论(0)