第8章 字串與陣列 8-1一維陣列的處理 8-2 字串處理 8-3 多維陣列的處理 8-4 動態陣列與參數傳遞 8-5 陣列排序與搜尋.

Slides:



Advertisements
Similar presentations
Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來.
Advertisements

6-1 指標簡介 6-2 指標與陣列 6-3 動態配置記憶體 6-4 本章綜合練習
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
第七章 抽樣與抽樣分配 蒐集統計資料最常見的方式是抽查。這 牽涉到兩個問題: 抽出的樣本是否具有代表性?是否能反應出母體的特徵?
學習C++的基本語法 認識關鍵字與識別字的不同 學習程式碼偵錯的流程 學習如何提高程式的可讀性
:Word Morphing ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10508:word morphing 解題者:楊家豪 解題日期: 2006 年 5 月 21 日 題意: 第一行給你兩個正整數, 第一個代表下面會出現幾個字串,
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
Instructor: Ching-Chi Lin 林清池 助理教授
3Com Switch 4500 切VLAN教學.
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章.
如何將數字變成可用之資訊 現代化資料處理與應用概念. 如何將數字變成可用之資訊 人最容易接受的訊息是圖像化資訊。 在一堆數字中,要進行比較分析,一般會使用表格形 式計算與分析。 所以一般我們會將數字依關聯性, 轉換成表格計算與分析。 此表格一般稱試算表或稱表格。 再將結果轉換為圖表,進行比較與分析。
指導教授:陳淑媛 學生:李宗叡 李卿輔.  利用下列三種方法 (Edge Detection 、 Local Binary Pattern 、 Structured Local Edge Pattern) 來判斷是否為場景變換,以方便使用者來 找出所要的片段。
1 Web of Science 利用指引 單元二 瀏覽與處理查詢結果. 2 瀏覽檢索結果 查出的結果,預設以時間排列, 使用者可改變結果的排列方式: 還可以依被引用次數、相關度、 第一作者、刊名、出版年等排序 回到前先查的結果畫面 點選想看資料的完整書目 本館訂購範圍的期刊 全文,便可直接連結.
:New Land ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11871: New Land 解題者:施博修 解題日期: 2011 年 6 月 8 日 題意:國王有一個懶兒子,為了勞動兒子,他想了一個 辦法,令他在某天早上開始走路,直到太陽下山前,靠.
: OPENING DOORS ? 題組: Problem Set Archive with Online Judge 題號: 10606: OPENING DOORS 解題者:侯沛彣 解題日期: 2006 年 6 月 11 日 題意: - 某間學校有 N 個學生,每個學生都有自己的衣物櫃.
第一章 變數、常數及資料型態. 變數 C 程式語言的變數名稱 第一個字必須是英文字母或底線 (_) 之後可以是數字, 英文字母或底線 (_) 不可以是保留字 例: Num (Ο) _score (Ο) C&C (X) 8num (X)
: ShellSort ★★☆☆☆ 題組: Problem D 題號: 10152: ShellSort 解題者:林一帆 解題日期: 2006 年 4 月 10 日 題意:烏龜王國的烏龜總是一隻一隻疊在一起。唯一改變烏龜位置 的方法為:一隻烏龜爬出他原來的位置,然後往上爬到最上方。給 你一堆烏龜原來排列的順序,以及我們想要的烏龜的排列順序,你.
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
第 13 章 常數、靜態成員與朋友關 係 13-1 常數物件與成員 13-1 常數物件與成員 13-2 物件成員與巢狀類別 13-2 物件成員與巢狀類別 13-3 靜態成員資料與函數 13-3 靜態成員資料與函數 13-4 朋友關係 13-4 朋友關係.
MATLAB 程式設計 第 11 章 多維陣列 多維陣列的定義 在 MATLAB 的資料型態中,向量可視為 一維陣列,矩陣可視二維陣列,對於維 度 (Dimensions) 超過 1 的陣列則均可視 為「多維陣列」 (Multidimesional Arrays , 簡稱 N-D Arrays)
第 18 章 名稱空間與例外處理 18-1 名稱空間 18-1 名稱空間 18-2 例外處理 18-2 例外處理.
8.1 何謂高度平衡二元搜尋樹 8.2 高度平衡二元搜尋樹的加入 8.3 高度平衡二元搜尋樹的刪除
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
: The Playboy Chimp ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10611: The Playboy Chimp 解題者:蔡昇宇 解題日期: 2010 年 2 月 28 日 題意:給一已排序的數列 S( 升冪.
長訊科技 EVRCOM Voice Mail System 使用者操作說明及流程. 自動總機 -- 來電語音轉接服務流程 ( 範例流程 )
第 7 章 程序與函數 7-1 模組化程式設計 7-1 模組化程式設計 7-2 VB.NET 的程序與函數 7-2 VB.NET 的程序與函數 7-3 程序與函數的變數範圍 7-3 程序與函數的變數範圍 7-4 VB.NET 常用的內建函數 7-4 VB.NET 常用的內建函數 7-5 遞迴函數 7-5.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
:Problem D: Bit-wise Sequence ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10232: Problem D: Bit-wise Sequence 解題者:李濟宇 解題日期: 2006 年 4 月 16.
第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5 跳出與繼續迴圈 6-5 跳出與繼續迴圈 6-6 錯誤處理 6-6 錯誤處理.
7 陣列與搜尋 7.1 陣列 一般資料變數 宣告一維陣列 起始一維陣列 7-4
Chapter 20 塑模動態觀點:狀態圖 Statechart Diagram. 學習目標  說明狀態圖的目的  定義狀態圖的基本記號  展示狀態圖的建構  定義活動、內部事件及遞延事件的狀態 圖記號.
: Happy Number ★ ? 題組: Problem Set Archive with Online Judge 題號: 10591: Happy Number 解題者:陳瀅文 解題日期: 2006 年 6 月 6 日 題意:判斷一個正整數 N 是否為 Happy Number.
: Fast and Easy Data Compressor ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10043: Fast and Easy Data Compressor 解題者:葉貫中 解題日期: 2007 年 3.
行政院國家科學委員會工程技術發展處自動化學門 * 試以國立成功大學製造工程研究所 鄭芳田教授 產學合作計畫 : 智慧預測保養系統之設計與實作 成果報告盤點為範例 國科會工程處專題計畫成果典藏 自動化學門成果報告盤點範例.
第十章 再論結構. 指標與結構的關係 /* File name: ex10-1a.c */ #include int main() { struct student { char *name; int score; }; struct student st= {"Brian", 97}; struct.
: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id)
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
第 13 章 檔案與資料夾處理 13-1 檔案與資料夾操作 13-1 檔案與資料夾操作 13-2 循序檔案的文字檔案讀寫 13-2 循序檔案的文字檔案讀寫 13-3 隨機檔案的處理 13-3 隨機檔案的處理 13-4 二進位檔案的讀寫 13-4 二進位檔案的讀寫 13-5 檔案對話方塊 13-5 檔案對話方塊.
程式設計 Visual Basic 6.0 Visual Basic 6.0 Visual Basic 6.0 程式設計 Visual Basic 6.0 Visual Basic 6.0 Visual Basic 6.0許翠婷
資料結構實習-一 參數傳遞.
6-2 認識元件庫與內建元件庫 Flash 的元件庫分兩種, 一種是每個動畫專 屬的元件庫 (Library) ;另一種則是內建元 件庫 (Common Libraries), 兩者皆可透過 『視窗』功能表來開啟, 以下即為您說明。
Lecture 7 Sorting in Linear Time. Sorting in Linear Time2 7.1 Lower bounds for sorting 本節探討排序所耗用的時間複雜度下限。 任何一個以比較為基礎排序的演算法,排序 n 個元 素時至少耗用 Ω(nlogn) 次比較。
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
: Beautiful Numbers ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11472: Beautiful Numbers 解題者:邱經達 解題日期: 2011 年 5 月 5 日 題意: 若一個 N 進位的數用到該.
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
JAVA 程式設計與資料結構 第二十章 Searching. Sequential Searching Sequential Searching 是最簡單的一種搜尋法,此演 算法可應用在 Array 或是 Linked List 此等資料結構。 Sequential Searching 的 worst-case.
資料結構實習-二.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
第 17 章 樣板 17-1 樣板的基礎 17-1 樣板的基礎 17-2 樣板函數 17-2 樣板函數 17-3 樣板類別 17-3 樣板類別 17-4 非型態參數的樣板類別 17-4 非型態參數的樣板類別 17-5 樣板類別的繼承 17-5 樣板類別的繼承 17-6 特化樣板與靜態成員 17-6 特化樣板與靜態成員.
Chapter 10 m-way 搜尋樹與B-Tree
: Function Overloading ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11032:Function Overloading 解題者:許智祺 解題日期: 2007 年 5 月 8 日 題意:判對輸入之數字是否為.
Probability Distribution 機率分配 汪群超 12/12. 目的:產生具均等分配的數值 (Data) ,並以 『直方圖』的功能計算出數值在不同範圍內出現 的頻率,及繪製數值的分配圖,以反應出該 機率分配的特性。
第 17 章 泛型類別與.NET Framework 17-1.NET Framework 類別函式庫 17-1.NET Framework 類別函式庫 17-2 使用.NET FCL 的類別 17-2 使用.NET FCL 的類別 17-3 My 名稱空間的類別 17-3 My 名稱空間的類別 17-4.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
5 重複迴圈 5.1 增減運算符號 增量運算符號 減量運算符號
第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5 跳出迴圈 6-5 跳出迴圈 6-6 VB.NET 的錯誤處理 6-6 VB.NET.
函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式.
Visual C++重點複習.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2008.
第 5 章 選擇控制項與條件敘述 5-1 結構化程式設計 5-1 結構化程式設計 5-2 關係與邏輯運算子 5-2 關係與邏輯運算子 5-3 簡單的條件敘述 5-3 簡單的條件敘述 5-4 選擇控制項 5-4 選擇控制項 5-5 巢狀條件敘述 5-5 巢狀條件敘述 5-6 多選一條件敘述 5-6 多選一條件敘述.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
Microsoft Excel.
Introduction to Java Programming Lecture 16 Super and Sub Classes.
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
著作權所有 © 旗標出版股份有限公司 第 14 章 製作信封、標籤. 本章提要 製作單一信封 製作單一郵寄標籤.
幼兒行為觀察與記錄 第八章 事件取樣法.
: How many 0's? ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11038: How many 0’s? 解題者:楊鵬宇 解題日期: 2007 年 5 月 15 日 題意:寫下題目給的 m 與 n(m
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
Presentation transcript:

第8章 字串與陣列 8-1一維陣列的處理 8-2 字串處理 8-3 多維陣列的處理 8-4 動態陣列與參數傳遞 8-5 陣列排序與搜尋

8-1 一維陣列的處理 8-1-1 陣列的基礎 8-1-2 宣告一維陣列 8-1-3 For Each迴圈走訪陣列元素與邊界函數

8-1-1 陣列的基礎-說明 「陣列」(Arrays)是一種程式語言的基本資料結構,屬於一種循序性的資料結構。日常生活最常見的範例是一排信箱,如下圖所示:

8-1-1 陣列的基礎-VB陣列 Visual Basic語言的陣列屬於參考資料型態,它可以將相同資料型態的變數集合起來,使用一個名稱代表,以索引值存取元素,每一個元素相當於是一個變數,如下圖所示:

8-1-2 宣告一維陣列-語法 Visual Basic陣列同樣使用【Dim】關鍵字來宣告,我們可以在宣告同時指定陣列尺寸。一維陣列的宣告語法,如下所示: Dim 陣列名稱(最大索引) As 資料型態 或 Dim 陣列名稱(0 To 最大索引) As 資料型態 陣列元素個數為括號的最大索引數加一,也可以使用To關鍵字指出範圍。

8-1-2 宣告一維陣列-範例 例如:宣告一維陣列來儲存學生姓名和成績,如下所示: Dim arrScore(4) As Integer Dim arrName(4) As String 上述程式碼宣告2個一維陣列,一為整數陣列;一是字串陣列,括號值是陣列最大的索引值。索引值是從0開始,以整數陣列來說是0~4共有5個元素。

8-1-2 宣告一維陣列-陣列值 我們也可以在宣告陣列時,不指定陣列最大索引值,而直接指定陣列元素的初值,如下所示: Dim arrScore() As Integer = {60, 89, 75, 68, 90} 另一種方法是使用指定敘述來指定陣列值,如下所示: arrScore(0) = 60 arrScore(1) = 89 arrScore(2) = 75 arrScore(3) = 68 arrScore(4) = 90

8-1-2 宣告一維陣列-取出陣列值 同樣方式,我們可以使用索引值來取出陣列元素值,如下所示: Dim score As Integer score = arrScore(3) 上述程式碼取得陣列索引3的值,因為索引值從0開始,也就是陣列的第4個元素值68。

8-1-3 For Each迴圈走訪陣列元素與邊界函數-走訪陣列(語法) For Each 變數 In 陣列 程式區塊 Next 上述「變數」可以取得陣列的一個元素,變數需要和陣列屬於相同資料型態,迴圈自動從索引0開始,每執行一次迴圈取得一個元素值並且自動移至下一個元素,直到沒有元素為止。

8-1-3 For Each迴圈走訪陣列元素與邊界函數-走訪陣列(範例) 例如:計算上一節arrScore陣列元素的總和,如下所示: For Each element In arrScore total += element Next 上述程式碼的變數element是陣列元素,每執行一次,就將陣列元素值加到total,最後變數total是陣列元素的總和。

8-1-3 For Each迴圈走訪陣列元素與邊界函數-陣列邊界函數 如果使用For/Next迴圈(Do/Loop迴圈也可以)來存取陣列元素,我們可以搭配Visual Basic函數來取得陣列邊界,傳入參數是陣列變數,如下表所示:

8-2 字串處理 8-2-1 字串的基礎 8-2-2 字串長度與大小寫轉換 8-2-3 取出子字串與字串反轉 8-2-4 子字串的搜尋與取代

8-2-1 字串的基礎-說明 Visual Basic字串是String資料型態的變數或字串值,字串是0或多個依序的Char資料型態的字元,以雙引號括起的文字內容,如下所示: Dim str As String = _ "Visual Basic 2005程式設計範例教本" Dim str1 As String str1 = "ASP.NET 2.0網頁製作徹底研究"

8-2-1 字串的基礎-新字串值 不過Visual Basic字串內容並不能更改,也就是說,一旦建立字串後,就無法改變其值,只能重新指定成新的字串值或另一個字串變數,如下圖所示:

8-2-2 字串長度與大小寫轉換 Visual Basic函數可以取得字串長度、進行英文字母大小寫轉換和刪除頭尾的空白字元,如下表所示:

8-2-3 取出子字串與字串反轉 Visual Basic提供Mid()、Left()和Right()等函數,可以從字串中取出所需的子字串,或是反轉字串,如下所示:

8-2-4 子字串的搜尋與取代-搜尋 在多行文字方塊如果輸入一整篇文章,我們可以使用Visual Basic函數來搜尋字串,和自行建立函數來取代子字串。Visual Basic字串搜尋函數,如下表所示:

8-2-4 子字串的搜尋與取代-取代 Visual Basic並沒有字串取代函數,我們可以自行使用Mid()、Left()和Right()函數來建立字串取代功能,如下所示: out = txtInput.Text strLeft = Mid(out, 1, pos) strRight = Mid(out, pos + length + 1) txtInput.Text = strLeft & txtReplace.Text & strRight 上述程式碼從字串out使用Mid()函數取出位在子字串左邊的strLeft字串和右邊的strRight字串,然後在中間加上取代字串,就完成字串取代功能。

8-3 多維陣列的處理-說明 「二維陣列」(Two-dimensional Array)或多維陣列都是一維陣列的擴充。如果將一維陣列想像成一度空間的線,二維陣列就是二度空間的平面,三維陣列即空間。 在日常生活中的二維陣列應用非常廣泛,只要是平面的表格,都可以轉換成二維陣列來表示。例如:月曆、功課表和成績單等。例如:在Visual Basic宣告學生成績的二維陣列,如下所示: Dim Scores(,) As Integer = _ { { 54, 68, 93 }, { 67, 78 , 89} }

8-3 多維陣列的處理-圖例 二維陣列擁有2個索引,左索引(Left Index)指出元素位在哪一列,右索引(Right Index)指出位在哪一欄,使用2個索引值就可以存取指定的二維陣列元素。

8-3 多維陣列的處理-指定元素值 二維陣列如果沒有指定陣列初值,我們需要在宣告時指定陣列尺寸,如下所示: 上述程式碼設定二維陣列的元素值。 Dim Scores(1, 2) As Integer Scores(0,0)=54 Scores(0,1)=68 Scores(0,2)=93 Scores(1,0)=67 Scores(1,1)=78 Scores(1,2)=89 上述程式碼設定二維陣列的元素值。

8-3 多維陣列的處理-走訪元素 在設定陣列值後,存取二維陣列需要使用二層巢狀迴圈,如下所示: For i = 0 To 1 For j = 0 To 2 Sums(i) += Scores(i, j) Next j Next i

8-4 動態陣列與參數傳遞 8-4-1 動態陣列 8-4-2 傳遞字串與陣列參數

8-4-1 動態陣列-宣告 Visual Basic陣列可以使用【ReDim】關鍵字在程式執行時,重新調整其尺寸。不過ReDim不能宣告陣列,只能更改已經宣告的陣列尺寸,如下所示: Dim arrScore(4) As Integer ……… ReDim arrScore(6) 上述程式碼將原來arrScore陣列大小從5改為7個元素。因為Visual Basic陣列在變更陣列尺寸後可能遺失陣列資料。

8-4-1 動態陣列-保留陣列內容 如果陣列已經擁有內容,請使用Preserve關鍵字來保留原陣列的內容,如下所示: ReDim Preserve arrScore(6) 上述程式碼可以放大陣列尺寸,當然放大陣列尺寸並不會有問題,如果縮小陣列的話,陣列裁剪部分的資料還是會遺失。

8-4-1 動態陣列-二維動態陣列 對於是二維以上的多維陣列,我們可以變更指定維度的尺寸,如果使用Preserve關鍵字,就只能變更最後1個維度的尺寸,如下所示: Dim arrTable(10, 20) ………. ReDim Preserve arrTable(10, 30)

8-4-2 傳遞字串與陣列參數-說明 程序與函數的參數如果是字串或陣列,因為字串與陣列都是參考資料型態,此時ByVal和ByRef參數傳遞的差異,如下表所示:

8-4-2 傳遞字串與陣列參數-範例 例如:在程序與函數中,使用指定敘述將參數指定成其他陣列,如下所示: Sub Replace(ByVal A() As Integer) Dim B() As Integer = {10, 20, 30} A = B …………. End Sub 上述程序將參數的陣列A指定成新陣列B,事實上,並不會影響原參數陣列A,因為傳值方式不能指定成新陣列。

8-5 陣列排序與搜尋 8-5-1 陣列的排序 8-5-2 陣列的搜尋

8-5-1 陣列的排序-基礎 排序工作是將一些資料依照特定原則排列成遞增或遞減的順序。例如:整數陣列Data的內容,如下所示: Data(0)=89 Date(1)=34 Date(2)=78 Date(3)=45 上述陣列以整數值的大小,將陣列內容依遞增的順序來排序。其排序結果如下所示: Data(0)=34 Date(1)=45 Date(2)=78 Date(3)=89 上述陣列Data已經完成排序,其大小順序如下所示: Data(0) < Data(1) < Data(2) < Data(3)

8-5-1 陣列的排序-泡沫排序法(說明) 泡沫排序法(Bubble Sort)是使用交換方式來進行排序,可以將較小元素逐漸移動至陣列開始,較大元素慢慢浮向陣列的最後,如同水缸中的泡沫,慢慢往上浮,故稱為泡沫排序法。

8-5-1 陣列的排序-泡沫排序法(過程) 泡沫排序法的過程是使用交換方法,在陣列中找尋最大值,例如:原始陣列內容,如下所示: Data(0)=89 Date(1)=34 Date(2)=78 Date(3)=45 陣列依序比較陣列元素0和1,元素1和2,元素2和3來交換陣列元素,如下所示: Data(0)=89 > Date(1)=34 => Data(0)=34 Date(1)=89 交換 Data(1)=89 > Date(2)=78 => Data(1)=78 Date(2)=89 交換 Data(2)=89 > Date(3)=45 => Data(2)=45 Date(3)=89 交換 陣列最大值89一步步往陣列尾端移動。接著重複上述步驟,每次縮小1個元素後,再重新比較陣列元素,就可以完成陣列元素的排序。

8-5-2 陣列的搜尋-基礎 搜尋是在資料中找出是否存在與鍵值相同的資料,如果資料存在,就進行後續的資料處理。例如:查尋電話簿是為了找朋友的電話號碼,然後與他連絡。在書局找書也是為了找到後買回家閱讀。 搜尋方法依照搜尋的資料分為兩種,如下所示: 沒有排序的資料:針對沒有排序的資料執行搜尋,我們需要從資料的第1個元素開始比較,從頭到尾以確認資料是否存在。 已經排序的資料:因為資料已經排序,所以搜尋就不需從頭開始一一比較。例如:在電話簿找電話,相信沒有人是從電話簿的第1頁開始找,而是直接從姓名出現的頁數開始找,因為電話簿已經依照姓名進行排序。

8-5-2 陣列的搜尋-線性搜尋法 線性搜尋法(Sequential Search)是從陣列的第1個元素開始走訪整個陣列,然後一個一個比較是否擁有搜尋的鍵值,因為需要走訪整個陣列,所以陣列資料是否排序都無所謂。 換句話說,在Visual Basic程式可以使用迴圈來走訪陣列,以便比較陣列是否有指定的鍵值。

8-5-2 陣列的搜尋-二元搜尋法 二元搜尋法(Binary Search)是一種分割資料的搜尋方法,搜尋資料是已經排序的資料。二元搜尋法先檢查排序資料的中間元素,如果等於鍵值就是找到;如果小於鍵值,表示資料在前半段;否則在後半段。然後繼續分割半段資料來重覆上述操作,直到找到或已經沒有資料可以分割為止。 例如:Data陣列索引的上下範圍分別是low和high,中間元素mid是(low + high)\2。在執行二元搜尋時分成三種情況,如下所示: 搜尋鍵值小於陣列的中間元素:鍵值在資料陣列的前半部。 搜尋鍵值大於陣列的中間元素:鍵值在資料陣列的後半部。 搜尋鍵值等於陣列的中間元素:找到搜尋的鍵值。