Selection Sort คือ อัลกอริทึมเรียงลำดับที่หาตัวเลขน้อยที่สุดใน Array แล้วย้ายไปตำแหน่งแรก ต่อมาเริ่มค้นหาตัวน้อยที่สุดในส่วนที่เหลือ วางตำแหน่งถัดไป ทำซ้ำจนครบ
ตัวอย่าง Array {6, 3, 8, 12, 9} ตัวน้อยสุดคือ 3 ย้ายไปหน้า -> {3, 6, 8, 12, 9} ต่อไปหาตัวน้อยใน {6,8,12,9} ได้ 6 วางต่อท้าย 3 ทำซ้ำจนเรียบร้อย
ขั้นตอน Selection Sort
- ตั้งตัวแรกเป็น Minimum
- เปรียบเทียบกับตัวถัดไป หากน้อยกว่า Minimum ให้อัปเดต Minimum ทำจนจบ Array
- สลับ Minimum ไปตำแหน่งแรกของส่วนที่ยังไม่เรียง
- รอบต่อไป เริ่มจากตัวถัดหลัง Minimum ที่วางไว้
ตัวอย่าง
#include <stdio.h>
int main() {
int arr[10] = {6, 12, 0, 18, 11, 99, 55, 45, 34, 2};
int n = 10;
int i, j, position, swap;
for (i = 0; i < (n - 1); i++) {
position = i;
for (j = i + 1; j < n; j++) {
if (arr[position] > arr[j])
position = j;
}
if (position != i) {
swap = arr[i];
arr[i] = arr[position];
arr[position] = swap;
}
}
for (i = 0; i < n; i++)
printf("%d\t", arr[i]);
return 0;
}ผลลัพธ์
0 2 6 11 12 18 34 45 55 99