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

โปรแกรม C สำหรับการเรียงลำดับการเลือก?


การเรียงลำดับการเลือกเป็นการจู่โจมอัลกอริธึมที่ทำงานโดยซื้อการค้นหาตัวเลขที่น้อยที่สุดจากอาร์เรย์แล้ววางลงในตำแหน่งแรก อาร์เรย์ถัดไปที่จะข้ามผ่านจะเริ่มจากดัชนีถัดจากตำแหน่งที่วางตัวเลขที่น้อยที่สุด

มาดูตัวอย่างเพื่อทำให้แนวคิดนี้ชัดเจนยิ่งขึ้น

เรามีอาร์เรย์ {6, 3, 8, 12, 9} ในอาร์เรย์นี้ องค์ประกอบที่เล็กที่สุดคือ 3 ดังนั้นเราจะวาง 3 ไว้ที่ตำแหน่งแรก หลังจากนี้อาร์เรย์จะมีลักษณะดังนี้ {3, 6, 8, 12, 9}. ตอนนี้เราจะพบจำนวนที่น้อยที่สุดอีกครั้ง แต่คราวนี้เราจะไม่พิจารณา 3 ในการค้นหาของเราเพราะมันมาแทนที่ ค้นหาองค์ประกอบที่เล็กที่สุดถัดไปคือ 6 สร้างอาร์เรย์ที่มี 6 ที่ตำแหน่งที่สอง จากนั้นค้นหาอีกครั้งในอาร์เรย์จนกระทั่งจัดเรียงอาร์เรย์

การทำงานของอัลกอริธึมการจัดเรียง -

ขั้นตอนต่อไปนี้ตามด้วยอัลกอริธึมการเรียงลำดับการเลือก

ลองหาอาร์เรย์ {20, 12 , 23, 55 ,21}

  • ตั้งค่าองค์ประกอบแรกของอาร์เรย์เป็นค่าต่ำสุด

    ขั้นต่ำ =20

  • เปรียบเทียบค่าต่ำสุดกับองค์ประกอบถัดไป หากน้อยกว่าค่าต่ำสุด ให้กำหนดองค์ประกอบนี้เป็นค่าต่ำสุด ทำสิ่งนี้จนจบอาร์เรย์

    เปรียบเทียบกับ 12 :20> 12 , ขั้นต่ำ =12

    เปรียบเทียบกับ 23 :12 <23 , ขั้นต่ำ =12

    เปรียบเทียบกับ 55 :12 <55 , ขั้นต่ำ =12

    เปรียบเทียบกับ 21 :12 <21 , ขั้นต่ำ =12

  • วางค่าต่ำสุดที่ตำแหน่งแรก (ดัชนี 0) ของอาร์เรย์

    อาร์เรย์ ={12, 20 ,23, 55, 21}

  • สำหรับการทำซ้ำครั้งต่อไป ให้เริ่มเรียงลำดับจากองค์ประกอบที่ไม่ได้เรียงลำดับแรก นั่นคือ องค์ประกอบที่อยู่ถัดจากตำแหน่งต่ำสุดที่วางไว้

    อาร์เรย์ ={12, 20 ,23, 55, 21}

    การค้นหาเริ่มจาก 20 องค์ประกอบถัดไปที่วางขั้นต่ำ

    ทำซ้ำ 2 :

    ขั้นต่ำ =20

    เปรียบเทียบกับ 23 :20 <23 , ขั้นต่ำ =20

    เปรียบเทียบกับ 55 :20 <55 , ขั้นต่ำ =20

    เปรียบเทียบกับ 21 :20 <21 , ขั้นต่ำ =20

    ขั้นต่ำในสถานที่ไม่มีการเปลี่ยนแปลง

    อาร์เรย์ ={12, 20 ,23, 55, 21}

    ทำซ้ำ 3 :

    ขั้นต่ำ =23

    เปรียบเทียบกับ 55 :23 <55 , ขั้นต่ำ =23

    เปรียบเทียบกับ 21 :23> 21 , ขั้นต่ำ =21

    ย้ายขั้นต่ำไปที่ดัชนี =2

    อาร์เรย์ ={12, 20, 21, 55, 23}

    ทำซ้ำ 4 :

    ขั้นต่ำ =55

    เปรียบเทียบกับ 23 :23 <55 , ขั้นต่ำ =23

    ย้ายขั้นต่ำในดัชนี 3Array ={12, 20, 21, 23, 55}

ตัวอย่าง

#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