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?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-08-25 20:37:18
ke hadapan
777 orang telah melayarinya

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
Salin selepas log masuk

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;
}
Salin selepas log masuk

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
Salin selepas log masuk

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;
}
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan