Home    Previous page ขั้นตอนวิธี สำหรับการจัดเรียงข้อมูล Next page
ขั้นตอนวิธี Selection sort
Selection sort เป็นวิธีการจัดเรียงข้อมูลที่ใช้วิธีเลือกข้อมูลที่เล็กที่สุดมาเรียงไว้ตามลำดับ ขั้นตอนวิธีดังนี้ SELECTION-SORT(A) เมื่อ A เป็น array
ข้อมูลเข้า A[1..n]
ข้อมูลออก การจัดเรียงของข้อมูลจำนวน n ตัวใน A โดยที่ A[1] A[2] A[3] . . . A[n] (sorted in place)
SELECTION-SORT(A)
1. for j = 1 to n-1
2.    (min, minj) = (A[j], j)
3.    for i = j+1 to n
4.      if min > A[i]
5.         (min, minj) = (A[i], i)
6.      endif
7.    endfor
8.    (A[j], A[minj]) = (A[minj], A[j])
9. endfor

ขั้นตอนวิธี Insertion sort
Insertion sort เป็นวิธีการจัดเรียงข้อมูลที่เหมาะกับข้อมูลขนาดเล็ก เรากำหนดการเรียกใช้ ขั้นตอนวิธีดังนี้ INSERTION-SORT(A) เมื่อ A เป็น array
ข้อมูลเข้า A[1..n]
ข้อมูลออก การจัดเรียงของข้อมูลจำนวน n ตัวใน A โดยที่ A[1] A[2] A[3] . . . A[n] (sorted in place)
INSERTION-SORT(A)

1. for j = 2 to length[A]
2.    (key, i) = (A[j], j-1)
3.     while i > 0 and A[i] > key
4.         (A[i+1], i) = (A[i], i-1)
5.     endwhile
6.     A[i+1] = key
7. endfor
ขั้นตอนวิธี Bubble sort
Bubble sort เป็นการเรียงโดยสลับค่าที่อยู่ติดกันให้อยู่ในลำดับที่เรียงกัน ขั้นตอนวิธีดังนี้ BUBBLE-SORT(A) เมื่อ A เป็น array
ข้อมูลเข้า A[1..n]
ข้อมูลออก การจัดเรียงของข้อมูลจำนวน n ตัวใน A โดยที่ A[1] A[2] A[3] . . . A[n]
BUBBLE-SORT(A)
1. for i =1 to  n-1
2.     for j = 1 to n - i
3.       if A[j] > A[j+1] then
4.          (A[j], A[j+1]) = (A[j+1], A[j])
5.       endif
6.     endfor
7. endfor
ขั้นตอนวิธี Merge sort
Merge sort เป็นวิธีการจัดเรียงข้อมูลที่ใช้หลักการ divide-and-conquer นั่นคือปัญหาจะถูกแบ่งออกเป็น ปัญหาย่อยขนาดเล็ก โดยใช้นิยามเวียนเกิดในการแก้ปัญหาย่อยเหล่านี่ ปัญหาหลังจากถูกแบ่งให้มีขนาดเล็กพอเหมาะแล้ว เราสามารถหาคำตอบได้โดยง่าย เรากำหนดการเรียกใช้ ขั้นตอนวิธีดังนี้ MERGE-SORT(A, p, r) เมื่อ A เป็น array และ p, r เป็นดัชนี ที่บอกการเรียงใน array A ที่ต้องการทำงาน
ข้อมูลเข้า A[1..n], p, r
ข้อมูลออก การจัดเรียงของข้อมูลใน A โดยที่ A[p] A[p+1] A[p+2] . . . A[r] (sorted in place)
MERGE-SORT(A, p, r)
1. if p < r
2.    then q = floor((p+r)/2)
3.       MERGE-SORT(A, p, q)
4.       MERGE-SORT(A, q+1, r)
5.       MERGE(A, p, q, r)
6. endif
MERGE(A, p, q, r)
1. m = r - p + 1
2. Create Temp[1..m]
3. (i, j, k) = (p, q+1, 1)
4. while(i <= q and j <= r) 
5.    if A[i] > A[j]
6.          (Temp[k], k, j) = (A[j], k+1, j+1)
7.       else
8.         (Temp[k], k, i) = (A[i], k+1, i+1)
9.       end if
10. end while
11. if(j <= r)
12.    while(j <= r)
13.      (Temp[k], k, j) = (A[j], k+1, j+1)
14.    endwhile
15. else
16.    while(i <= q)
17.      (Temp[k], k, i) = (A[j], k+1, i+1)
18.      endwhile
19. endif
20. for i = 1 to m
21.     A[i+p-1] = Temp[i]
22. endfor
ขั้นตอนวิธี Heap sort
Heap sort ใช้ขั้นตอนวิธีสามส่วนในการเรียงลำดับข้อมูล ส่วนแรกเป็นส่วนของการสร้าง Heap ซึ่งเป็น complete binary tree ที่มีคุณสมบติว่าค่าของ parent มีค่ามากกว่าหรือเท่ากับ ค่าของ children โดยที่ children ซ้ายและขวาเป็น Heap มาก่อน ส่วนที่สองเป็นการสร้าง Heap จากข้อมูลทั้งหมด และส่วนสุดท้ายเป็นการจัดเรียงข้อมูลโดยใช้โครงสร้างของ Heap
ข้อมูลเข้า A[1..n], i
ข้อมูลออก การจัดเรียงของข้อมูลใน A ที่ node i มีคุณสมบัติ heap
HEAPIFY(A, i)
1. L = LEFT(i)
2. R = RIGHT(i)
3. if L <= heap-size[A] and A[L] > A[i]
4.    then largest = L
5.    else largest = i
6. endif
7. if R <= heap-size[A] and A[R] > A[largest]
8.    then largest = R
9. endif
10. if largest != i
11.    then exchange A[i] with A[largest]
12.       HEAPIFY(A, largest)
13. endif
ข้อมูลเข้า A[1..n]
ข้อมูลออก การจัดเรียงของข้อมูลใน A ที่เป็น HEAP ทั้งหมด
BUILD-HEAP(A)
1. heap-size[A] = length[A]
2. for i = floor(length[A]/2) downto 1
3.      HEAPIFY(A, i)
4. endfor
ข้อมูลเข้า A[1..n]
ข้อมูลออก การจัดเรียงของข้อมูลใน A
HEAPSORT(A)
1. BUILD-HEAP(A)
2. for i = length[A] downto 2
3.      exchange A[1] with A[i]
4.      heap-size[A] = heap-size[A] - 1
5.     HEAPIFY(A, 1)
6. endfor
ขั้นตอนวิธี Quick sort
Quick sort ใช้หลักการ divide-and-conquer เหมือนกับ merge sort แต่แทนที่จะใช้ การรวมกันของข้อมูลที่เรียงแล้ว Quick sort ใช้วิธีการสลับที่ของสมาชิกใน array โดยที่สมาชิกในส่วนหน้าต้องน้อยกว่า หรือเท่ากับสมาชิกในส่วนหลัง A[p...q] <= A[q+1...r]
ข้อมูลเข้า A[1..n], p, r
ข้อมูลออก การจัดเรียงของข้อมูลใน A โดยที่ A[p] A[p+1] A[p+2] . . . A[r] (sorted in place)
QUICK-SORT(A, p, r)
1. if p <  r
2.    then q = PARTITION(A, p, r)
3.       QUICK-SORT(A, p, q)
4.       QUICK-SORT(A, q+1, r)
5. endif
PARTITION(A, p, r)
1. (x, i, j) = (A[p], p-1, r+1)
2. while TRUE
3.    do repeat j = j-1
4.    until A[j] <= x
5.    do repeat i = i+1
6.    until A[i] >= x
7.    if i < j
8.       (A[i], A[j]) = (A[j], A[i])
9.      else
10.        return j
11.     endif
12. endwhile

	 
Home | Previous | Next


© Copyright by กรุง สินอภิรมย์สราญ