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

1 2 | key = 20
mid = (low +high) /2
|
Salin selepas log masuk
Program yang paling kecil untuk dicari
dalam sebuah tatasusunan menggunakan program C carian binari:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # 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 −
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 −
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | # 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 −
1 2 3 4 5 6 7 8 9 | 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!