在此 C 程序中,我们正在实现二分查找算法以搜索关键数字。二分查找算法也称为“半区间算法”或“对数算法”。为了实现二分查找算法,我们需要按升序或降序对数组进行排序。
该算法将数组的中心元素与关键词进行比较。如果找到该元素,则会返回其位置并显示“搜索元素已找到”的消息。否则,如果中间数字小于关键词,则算法在左子数组上重复相同的步骤;如果元素大于数组的中心元素,则在右子数组上搜索。
注意:二分查找的最坏情况复杂度是 O(log n)。
导入头文件并初始化变量后,我们接受用户输入到数组中,并使用冒泡排序技术对数组进行排序。(请参考上一程序中的“冒泡排序”)。以升序排序元素后,我们显示已排序的数组并使用“do while”循环开始二分查找。在循环内部,取数组的中心元素并将其与键进行比较,直到找到该元素。
步骤 1:将头文件包含到 C 程序中以使用内置函数。
步骤 2:初始化变量并使用 C 编程语法声明它们。
步骤 3:使用 printf 和 scanf 内置函数从用户那里获取项数。
步骤 4:使用“for 循环”和 scanf 将元素接受到数组中。
步骤 5:使用“for 循环”和 printf 显示数组的元素。
步骤 6:打开嵌套的“for 循环”以实现冒泡排序算法。
步骤 7:使用 if 条件检查,比较元素是否大于被比较元素
步骤 8:如果是,则使用临时变量交换元素。
步骤 9:使用“for 循环”和 printf 打印已排序的数组。
步骤 10:使用 printf 和 scanf 从用户那里接受要搜索的元素。
步骤 11:将 Low 分配为 1,High 分配为项数。
步骤 12:打开一个带有条件 ( keynum!=array[mid] && low <= high) 的“do while”循环,直到条件满足。keynum = 搜索元素。
步骤 13:使用公式 (low + high) / 2 计算中间元素。
步骤 14:使用“if”条件检查 Keynum 是否小于数组中间元素。如果是,则 high = mid - 1。
步骤 15:否则检查 keynum 是否小于数组中间元素,如果是则 low = mid + 1。
步骤 16:使用“if”条件检查 keynum 是否等于数组中间元素。如果是,则打印搜索成功。
步骤 17:否则打印搜索失败并退出 C 程序。
#include <stdio.h>
void main()
{
int array[10];
int i, j, num, temp, keynum;
int low, mid, high;
printf("Enter the value of num \n");
scanf("%d", #);
printf("Enter the elements one by one \n");
for (i = 0; i < num; i++)
{
scanf("%d", &array;[i]);
}
printf("Input array elements \n");
for (i = 0; i < num; i++)
{
printf("%d\n", array[i]);
}
/* Bubble sorting begins */
for (i = 0; i < num; i++)
{
for (j = 0; j < (num - i - 1); j++)
{
if (array[j] > array[j + 1])
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
printf("Sorted array is...\n");
for (i = 0; i < num; i++)
{
printf("%d\n", array[i]);
}
printf("Enter the element to be searched \n");
scanf("%d", &keynum;);
/* Binary searching begins */
low = 1;
high = num;
do
{
mid = (low + high) / 2;
if (keynum < array[mid])
high = mid - 1;
else if (keynum > array[mid])
low = mid + 1;
} while (keynum != array[mid] && low <= high);
if (keynum == array[mid])
{
printf("SEARCH SUCCESSFUL \n");
}
else
{
printf("SEARCH FAILED \n");
}
}
Enter the value of N 4 Enter the elements one by one 3 1 4 2 Input array elements 3 1 4 2 Sorted array is... 1 2 3 4 Enter the element to be searched 4 SUCCESSFUL SEARCH