如题。
输入为数据个数n,需要查找的数x以及含n个数据的数组。
输出为Found或Not Found(可根据需要修改输出量)。
#include <stdio.h>
void bubbleSort (int array[], int n);
int binarySearch (int array[], int n, int target);
int main ()
{
int n, i, x;
scanf ("%d %d", &n, &x);
int num[n];
for (i = 0; i < n; i++)
scanf ("%d", &num[i]);
/*输入 n 个数据以及需要查找的数据*/
bubbleSort (num, n);
/*冒泡排序*/
if (binarySearch (num, n, x))
printf ("Found\n");
else
printf ("Not Found\n");
/*二分查找*/
return 0;
}
void bubbleSort (int array[], int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
{
for (j = i; j < n - 1; j++)
{
if (array[j] > array[j + 1])
{
int tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
}
}
}
return;
}
int binarySearch (int array[], int n, int target)
{
int lef = array[0], rht = array[n-1];
if (lef == rht)
if (target == lef)
return 1;
else
return 0;
else
{
int mid = array[(n - 1) / 2];
/*若 n 为奇数则恰好为中间项,若 n 为偶数则为中间偏大项*/
if (target == mid)
return 1;
else if (target < mid)
return binarySearch (array, n / 2, target);
else if (target >mid)
return binarySearch (&array[(n - 1) / 2], n / 2, target);
/*可能会多比较一位(中间项),但不需要考虑奇偶数,可谓是无脑写法*/
}
}