Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mencari elemen terkecil dalam tatasusunan menggunakan algoritma carian binari dalam bahasa C?

Bagaimana untuk mencari elemen terkecil dalam tatasusunan menggunakan algoritma carian binari dalam bahasa C?

WBOY
WBOYke hadapan
2023-08-25 20:37:18733semak imbas

Bahasa pengaturcaraan C menyediakan dua teknik carian. Ia adalah seperti berikut:

  • Carian linear
  • Carian binari

Carian binari

  • Kaedah ini hanya berfungsi dengan senarai tersusun.
  • Senarai yang diberikan dibahagikan kepada dua bahagian yang sama.
  • Kata kunci yang diberikan dibandingkan dengan elemen tengah senarai.

Di sini, tiga situasi mungkin berlaku seperti berikut:

  • Jika elemen tengah sepadan dengan kata kunci, carian akan berakhir di sini dengan jayanya

  • Jika elemen tengah lebih besar daripada kata kunci, carian akan Teruskan dalam partition kiri.

  • Jika elemen tengah lebih kecil daripada kata kunci, carian akan dilakukan pada partition kanan.

Input (i/p) - Senarai unsur, kata kunci yang tidak diisih.

Output (o/p) -

  • Kejayaan - Jika kata kunci ditemui
  • Gagal - Jika tidak

Bagaimana untuk mencari elemen terkecil dalam tatasusunan menggunakan algoritma carian binari dalam bahasa C?

key = 20
mid = (low +high) /2

Bagaimana untuk mencari elemen terkecil dalam tatasusunan menggunakan algoritma carian binari dalam bahasa C?Program yang paling kecil untuk dicari

dalam sebuah tatasusunan menggunakan program C carian binari:

#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;
}

Output

Apabila atur cara di atas dilaksanakan, ia menghasilkan hasil berikut −

Run 1:
enter the no: of elements:5
enter the elements:
12
34
11
56
67
enter a key element:45
search is unsuccessful
Run 2:
enter the no: of elements:3
enter the elements:
12
34
56
enter a key element:34
search is successful

Program2

Memandangkan atur cara C berikut, cari elemen minimum dalam tatasusunan dengan menggunakan binari carian −

#include<stdio.h>
void Bmin(int *a, int i, int n){
   int j, temp;
   temp = a[i];
   j = 2 * i;
   while (j <= n){
      if (j < n && a[j+1] > a[j])
         j = j + 1;
      if (temp < a[j])
         break;
      else if (temp >= a[j]){
         a[j / 2] = a[j];
         j = 2 * j;
      }
   }
   a[j/2] = temp;
   return;
}
int binarysearchmin(int *a,int n){
   int i;
   for(i = n/2; i >= 1; i--){
      Bmin(a,i,n);
   }
   return a[1];
}
int main(){
   int n, i, x, min;
   int a[20];
   printf("Enter no of elements in an array</p><p>");
   scanf("%d", &n);
   printf("</p><p>Enter %d elements: ", n);
   for (i = 1; i <= n; i++){
      scanf("%d", &a[i]);
   }
   min = binarysearchmin(a, n);
   printf("\minimum element in an array is : %d", min);
   return 0;
}

Output

Apabila program di atas dilaksanakan, ia menghasilkan hasil berikut −

Enter no of elements in an array
5
Enter 5 elements:
12
23
34
45
56
minimum element in an array is: 12

Atas ialah kandungan terperinci Bagaimana untuk mencari elemen terkecil dalam tatasusunan menggunakan algoritma carian binari dalam bahasa C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam