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

อธิบายการค้นหาไบนารีในภาษาซี


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

สามสถานการณ์อาจเกิดขึ้นในการค้นหาแบบไบนารีซึ่งมีดังต่อไปนี้ -

  • หากองค์ประกอบตรงกลางตรงกับคีย์ การค้นหาจะสิ้นสุดที่นี่

  • หากองค์ประกอบตรงกลางมีค่ามากกว่าคีย์ การค้นหาจะดำเนินการในพาร์ติชั่นด้านซ้าย

  • หากองค์ประกอบตรงกลางต่ำกว่าคีย์ การค้นหาจะดำเนินการในพาร์ติชั่นที่ถูกต้อง

อินพุต (i/p)

เรียงรายการขององค์ประกอบที่สำคัญ

เอาต์พุต (o/p)

  • ความสำเร็จ - หากพบคีย์
  • ไม่สำเร็จ − มิฉะนั้น

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C สำหรับวิธีการค้นหาแบบไบนารี -

#include<stdio.h>
int main(){
   int a[50], n, i, key, flag = 0, low, mid, high;
   printf("enter the no: of elements:");
   scanf ("%d",&n);
   printf("enter the elements:");
   for(i=0; i<n; i++)
      scanf( "%d", &a[i]);
   printf("enter a key element:");
   scanf ("%d", &key);
   low = 0;
   high = n-1;
   while (low<= high ){
      mid = (low + high) /2;
      if (a[mid] == key){
         flag = 1;
      break;
   } else {
      if (a[mid] > key)
         high = mid-1;
      else
         low = mid+1;
      }
   }
   if (flag == 1)
      printf ("search is successful");
   else
   printf("search is unsuccessful");
   return 0;
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

enter the no: of elements:5
enter the elements:23
45
57
89
90
enter a key element:45
search is successful