Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mencari elemen terkecil dalam tatasusunan menggunakan algoritma carian binari dalam bahasa C?
Bahasa pengaturcaraan C menyediakan dua teknik carian. Ia adalah seperti berikut:
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) -
key = 20 mid = (low +high) /2
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; }
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
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; }
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!