1 / 36

8-1 排序

8-1 排序. 排序 (Sorting) 就是利用「 比較 」及「 交換 」的方法, 將一群資料依條件加以排序。 種類: 1 、依大小順序的條件可分: 1) 升冪: 由小到大 ( 遞增 ) 2) 降冪: 由大到小 ( 遞減 ) 2 、依資料多寡可分: 1) 內部 排序:全部資料可一次在電腦內 ( 主記憶體 ) 做排序。

Download Presentation

8-1 排序

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 8-1 排序 • 排序(Sorting) 就是利用「比較」及「交換」的方法, 將一群資料依條件加以排序。 • 種類: 1、依大小順序的條件可分: 1) 升冪:由小到大(遞增) 2) 降冪:由大到小(遞減) 2、依資料多寡可分: 1)內部排序:全部資料可一次在電腦內(主記憶體) 做排序。 2)外部排序:部分資料在電腦內排序,部分資料 暫存在輔助記憶體(硬碟)中,再分批 讀到電腦內(主記憶體)排序。

  2. 一、氣泡排序法 (一) 原理:逐次「比較」兩相鄰的資料,並 依照條件(遞增或遞減)來「交換」 位置,如此反覆地做。 (二) 實例:將 25,12,47,18,9 由小到大排序。

  3. 5個數字 氣泡排序法 b(1) b(2) b(3) b(4) b(5) 25 12 47 18 9 第1次循環 將 25,12,47,18,9 由小到大排序。 12 25 47 18 共4次比較 9 47 b(1) b(2) b(3) b(4) b(5) 12 25 18 9 47

  4. 氣泡排序法 5個數字 b(1) b(2) b(3) b(4) b(5) 12 25 18 9 47 第2次循環 已固定不動 25 18 25 9 共3次比較 b(1) b(2) b(3) b(4) b(5) 12 18 9 25 47

  5. 氣泡排序法 5個數字 b(1) b(2) b(3) b(4) b(5) 12 18 9 25 47 第3次循環 已固定不動 18 9 共2次比較 b(1) b(2) b(3) b(4) b(5) 12 9 18 25 47

  6. 氣泡排序法 5個數字 b(1) b(2) b(3) b(4) b(5) 12 9 18 25 47 第4次循環 已固定不動 12 9 b(1) b(2) b(3) b(4) b(5) 9 12 18 25 47 結論:1、n 個數,共有 n-1次循環。 2、其比較次數固定,共有 (n-1) + (n-2) +….+ 1 = ((n-1)+1) × (n-1) / 2 = n ( n – 1 ) / 2次 共1次比較

  7. (三) 特性: 1、在第 1 次循環,第5個位置第1大數。 2、在第 2 次循環,第4個位置第2大數。 3、在第 3 次循環,第3個位置第3大數。 4、在第 4 次循環,第2個位置第4大數。 5、結論:第 n 次循環,可得到第 n個大的數, 且後方先固定。 6、每經一次循環,其比較的次數會遞減1次。 ( n個數,比較次數固定為 n(n-1) /2 ) 7、交換次數不一定。

  8. 二、選擇排序法( Select Sort) (一) 原理: 以「指定位置的資料」與 後面所有資料 比較,以挑選較大或較小資料。 (二) 實例:將 53,46,12,38,76 由小到大排序。

  9. 選擇排序法 b(1) b(2) b(3) b(4) b(5) 5個數字 53 46 12 38 76 第1次循環 將 53,46,12,38,76 由小到大排序。 46 53 12 46 共4次比較 b(1) b(2) b(3) b(4) b(5) 12 53 46 38 76

  10. 5個數字 選擇排序法 b(1) b(2) b(3) b(4) b(5) 12 53 46 38 76 第2次循環 已固定不動 46 53 38 46 共3次比較 b(1) b(2) b(3) b(4) b(5) 12 38 53 46 76

  11. 5個數字 選擇排序法 b(1) b(2) b(3) b(4) b(5) 12 38 53 46 76 第3次循環 已固定不動 46 53 共2次比較 b(1) b(2) b(3) b(4) b(5) 12 38 46 53 76

  12. 5個數字 選擇排序法 b(1) b(2) b(3) b(4) b(5) 12 38 46 53 76 第4次循環 已固定不動 b(1) b(2) b(3) b(4) b(5) 12 38 46 53 76 結論:與氣泡排序相同 1、n 個數,共有 n-1次循環。 2、其比較次數固定,共有 (n-1) + (n-2) +….+ 1 = ((n-1)+1) × (n-1) / 2 = n ( n – 1 ) / 2次 共1次比較

  13. (三) 特性: 1、在第 1 次循環,第1個位置最小數。 2、在第 2 次循環,第2個位置第2小數。 3、在第 3 次循環,第3個位置第3小數。 4、在第 4 次循環,第4個位置第4小數。 5、結論:第 n 次循環,可得到第 n個小的數, 且前方先固定。 6、每經一次循環,其比較的次數會遞減1次。 ( n個數,比較次數固定為 n(n-1) /2 ) 7、交換次數不一定。

  14. 三、交換次數最少的清況 (一) 交換次數最少為 0 次 (二) 原資料已排序,且順序就是欲排的大小順序。 (三) 例如:原始資料已由小到大排列, 而欲將資料由小到大排序,則不必交換。 四、交換次數最多的清況 (一) 交換次數最多n(n-1)/2次 (二) 原資料已排序,且順序恰好與欲排的順序相反。 (三) 例如:原始資料已由小到大排列, 而欲將資料由大到小排序,則每次比較都要交換。

  15. 五、比較次數 (一) 不論交換與否,比較次數固定為 n (n-1) / 2 (二) 交換次數與程式無關,而與原始資料的 排列有關。

  16. 98 69 73 52 88 98 88 69 52 73 98 88 73 52 69 98 88 73 69 52

  17. 41 102 41 52 102 41 52 20 41 67 52 41 67 52 41 52 20 67 41 52 20 41 20 52 20 41

  18. 8-2 搜尋(Search) • 搜尋 是從一群資料尋找所要資料。 一、循序搜尋法 (一) 從第一筆開始一個接一個去尋找,直到 找到或 找完所有資料為止。 (二) 優點:簡單 (三) 缺點:速度慢,不適合即時處理。

  19. (四) 若有n筆記錄,且以循序搜尋法來尋找 則: 1、最少找 1次 2、最多找 n次 3、平均找 ( n +1 ) / 2 次

  20. A(2) A(3) A(4) A(5) A(1)

  21. 二、二元搜尋法 (二分搜尋法) (一) 由「逼近」的概念而來。先決條件是 「資料須事先排序過」 (二) 圖解:假設有n個同學依身高由小到大排序。 如欲尋找 180公分的同學。 1、第1次是直接找中間的同學。 2、因身高並非180公分,而是 178公分,所以該同學絕不在 左半段。 3、將搜尋範圍減為一半 4、對另一半重覆搜尋。 192 178 140 第n個 第1個 中間值 m

  22. (四) 邏輯流程 1、設下限L及 上限U (通常 L = 1 , U = n。而n表示資料個數) 2、取中間值 m ( m = Fix ( (L+U) / 2 ) 3、比較: 若中間值 = 尋找資料,就找到了。 若中間值 > 尋找資料, 資料不在右半段,改變上限 U = m-1,重複步驟2。 若中間值 < 尋找資料, 資料不在左半段,改變上限 L = m+1,重複步驟2。 178 192 140 L U 第n個 第1個 中間值 m

  23. 在資料中找出字母「L」

  24. m 例題 設有一字串資料已按序排列如下: 試以二元搜尋法取得「22」資料順序列。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1,4,7,8,10,12,13,15,18,19,22,23,25,27,30 L L U m m U m L 1、m = Fix ( ( 1 + 15) / 2 ) = 8 15 2、m = Fix ( ( 9 + 15) / 2 ) = 12 23 3、m = Fix ( ( 9 + 11) / 2 ) = 10 19 4、m = Fix ( ( 11 + 11) / 2 ) = 11 22

  25. (四) 優點:速度快,適合即時作業。 (五) 缺點:需額外時間排序資料。 (六) 若有 n 筆記錄且已排序,今以二元搜尋 法來尋找。 1、最少找 1次。 2、最多找 Log2n 次。 Ps.任何數,取 Log,可求其指數! Log10102= 2

  26. 例: 若有999筆記錄,以「二元」及「循序」搜尋法來搜尋資料,則最少和最多幾次? 循序搜尋法: 最少 1 次 ;最多 999 次 平均 (1+999) / 2 = 500 次 二元搜尋法: 最少 1 次 ;最多 Log2 999 次 Log2 512 < Log2 999 < Log2 1024 Log2 29 < Log2 999 < Log2 210 9 < Log2 999 < 10 故最少要10次

  27. A(1) A(2) A(3) A(4) A(5) A(6)

More Related