計算機概論 - 排序 1 排序 (Sorting) 李明山 編撰 ※手動換頁
計算機概論 - 排序 2 將資料項目依特定之順序排列,如 依數值由大而小或由小而大排列 依英文字母順序排列 依中文字筆劃順序排列 依日期先後順序排列 按成績高低排列
計算機概論 - 排序 3 資料查詢 (Query) 資料編序 (Ranking) 資料分類 (Classify) 資料比對 (Comparing)
計算機概論 - 排序 4 依資料儲存位置的差異可區分為兩種: 內部排序 (Internal sorting) 資料全部儲存在主記憶體內作排序 資料量小 外部排序 (External sorting) 資料儲存在輔助記憶體內作排序 資料量大
計算機概論 - 排序 5 將串列資料由上往下比較相鄰兩個項目 ,如果順序不對就將之互換。 一循環的比較互換並不能完成排序,必 須將其結果進行次一循環的比較互換。 一循環的比較若無互換的狀況,即是排 序完成。
計算機概論 - 排序 6 氣泡排序法 (Bubble sort)
計算機概論 - 排序 7 氣泡排序法 (Bubble sort)
計算機概論 - 排序 8 氣泡排序法 (Bubble sort)
計算機概論 - 排序 9 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 10 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 11 氣泡排序法 (Bubble sort)
計算機概論 - 排序 12 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 13 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 14 氣泡排序法 (Bubble sort)
計算機概論 - 排序 15 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 16 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 17 氣泡排序法 (Bubble sort)
計算機概論 - 排序 18 氣泡排序法 (Bubble sort) ○
計算機概論 - 排序 19 氣泡排序法 (Bubble sort) ○
計算機概論 - 排序 20 氣泡排序法 (Bubble sort)
計算機概論 - 排序 21 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 22 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 23 氣泡排序法 (Bubble sort)
計算機概論 - 排序 24 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 25 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 26 氣泡排序法 (Bubble sort)
計算機概論 - 排序 27 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 28 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 29 氣泡排序法 (Bubble sort)
計算機概論 - 排序 30 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 31 氣泡排序法 (Bubble sort) ×
計算機概論 - 排序 32 氣泡排序法 (Bubble sort)
計算機概論 - 排序
計算機概論 - 排序
計算機概論 - 排序 35 將串列資料由上往下比較相鄰兩個項目 ,如果順序不對就將之互換。 一循環的比較互換並不能完成排序,必 須將其結果進行次一循環的比較互換。 一循環的比較若無互換的狀況,即是排 序完成。
計算機概論 - 排序 36 ALGORITHM BUBBLE_SORT INPUT N INPUT N INPUT LIST(1:N) INPUT LIST(1:N) REPEAT REPEAT NO_EXCHANGES ← TRUE NO_EXCHANGES ← TRUE FOR I ← 1 TO N-1 DO FOR I ← 1 TO N-1 DO IF LIST(I) > LIST(I+1) THEN IF LIST(I) > LIST(I+1) THEN TEMP ← LIST(I) TEMP ← LIST(I) LIST(I) ← LIST(I+1) LIST(I) ← LIST(I+1) LIST(I+1) ← TEMP LIST(I+1) ← TEMP NO_EXCHANGES ← FALSE NO_EXCHANGES ← FALSE END IF END IF END FOR END FOR UNTIL NO_EXCHANGES UNTIL NO_EXCHANGES OUTPUT LIST(1:N) OUTPUT LIST(1:N) END BUBBLE_SORT
計算機概論 - 排序 37 Ming-Shang Lee CopyRight 2001 ALGORITHM BUBBLE_SORT INPUT N INPUT LIST(1:N) REPEAT NO_EXCHANGES ← TRUE FOR I ← 1 TO N-1 DO IF LIST(I) > LIST(I+1) THEN TEMP ← LIST(I) LIST(I) ← LIST(I+1) LIST(I+1) ← TEMP NO_EXCHANGES ← FALSE END IF END FOR UNTIL NO_EXCHANGES OUTPUT LIST(1:N) END BUBBLE_SORT TEMP ← LIST(I) LIST(I) ← LIST(I+1) LIST(I+1) ← TEMP LIST(I) ←→ LIST(I+1)
計算機概論 - 排序 38 ALGORITHM BUBBLE_SORT INPUT N INPUT LIST(1:N) REPEAT NO_EXCHANGES ← TRUE FOR I ← 1 TO N-1 DO IF LIST(I) > LIST(I+1) THEN TEMP ← LIST(I) LIST(I) ← LIST(I+1) LIST(I+1) ← TEMP NO_EXCHANGES ← FALSE END IF END FOR UNTIL NO_EXCHANGES OUTPUT LIST(1:N) END BUBBLE_SORT 虛擬碼 (pseudocode)
計算機概論 - 排序 39 簡單性 有效性
計算機概論 - 排序 40 謝爾 (Shell) 排序法的要領 將串列資料以先大後小的跨距分組比較 。 採用氣泡排序法對各組資料排序。 跨距第一次設為資料量的一半,每次減 為一半,直到 0 為止。
計算機概論 - 排序 41 謝爾排序法 (Shell sort) N = 8
計算機概論 - 排序 42 謝爾排序法 (Shell sort) N = 8
計算機概論 - 排序 43 謝爾排序法 (Shell sort) N = 8
計算機概論 - 排序 44 謝爾排序法 (Shell sort) N = 8
計算機概論 - 排序 45 謝爾排序法 (Shell sort) N = 8
計算機概論 - 排序 46 謝爾排序法 (Shell sort) N = 8
計算機概論 - 排序 47 謝爾排序法 (Shell sort) N =
計算機概論 - 排序 48 謝爾排序法 (Shell sort) N =
計算機概論 - 排序 49 謝爾排序法 (Shell sort) N =
計算機概論 - 排序 50 謝爾排序法 (Shell sort) N =
計算機概論 - 排序 51 謝爾排序法 (Shell sort) N =
計算機概論 - 排序 52 謝爾排序法 (Shell sort) N =
計算機概論 - 排序 53 謝爾排序法 (Shell sort) N =
計算機概論 - 排序 54 謝爾排序法 (Shell sort) N =
計算機概論 - 排序 55 謝爾排序法 (Shell sort) N = 9
計算機概論 - 排序 56 謝爾排序法 (Shell sort) N = 9
計算機概論 - 排序 57 謝爾排序法 (Shell sort) N = 9
計算機概論 - 排序 58 謝爾排序法 (Shell sort) N = 9
計算機概論 - 排序 59 謝爾排序法 (Shell sort) N = 9
計算機概論 - 排序 60 謝爾排序法 (Shell sort) N = 9
計算機概論 - 排序 61 Ming-Shang Lee CopyRight 2001 快速排序法 (Quicksort)
計算機概論 - 排序 62 插入排序 (Insertion sort) 交換排序 (Transposition sort) 選擇排序 (Selection sort) 分散排序 (Distribution sort, Radix sort) 合併排序 (Merge sort)
計算機概論 - 排序 63 插入排序 (Insertion sort) 未排序已排序
計算機概論 - 排序 64 交換排序 (Transposition sort) 氣泡排序法 (Bubble sort) 謝爾排序法 (Shell sort) 堆積排序法 (Heapsort) 快速排序法 (Quicksort)
計算機概論 - 排序 65 選擇排序 (Selection sort) 未排序已排序 最小值
計算機概論 - 排序 66 分散排序 (Distribution sort, Radix sort)
計算機概論 - 排序 67 合併排序 (Merge sort) 的要領 兩組已由小到大排序之串列資料,開始時各以指標 指到第一筆,比較兩組指標指到的資料,以較小者 抽出至新的串列,該組指標隨之下移一筆,隨後再 比較兩組指標指到的資料,重覆相同步驟,直到其 中一組之資料已全部抽出,則將另一組資料依序抽 出至新的串列而結束。 欲排序之串列資料,可分成等量(或接近等量)之 兩組,再個別分成兩組以相同要領完成排序,即可 再用此要領合併成一個排序的串列資料。
計算機概論 - 排序 68 Ming-Shang Lee CopyRight 2001 合併排序 (Merge sort) 已排序 已排序 已排序