Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C Selection Sort (การเรียงลำดับแบบคัดเลือก)


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