题目1:二分查找,对数组里的正数和负数进行查找分组
#include<stdio.h>
int main()
{
float x[] = { 2.32,-4.35,0,8.4,-2.94,5.06 }, s1 = 0, s2 = 0;
int i;
for (i = 0; i < 6; i++)
if (x[i] < 0)
s1 += x[i];
else
s2 += x[i];
printf("s1=%.1f\t s2=%.1f\n", s1, s2);
return 0;
}
题目2:二分查找进阶,输入一个指定的数(数组中存在的数)并查找它的元素位置
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a[10] = { 45,23,43,78,65,32,48,19,94,85 };
int i, j, t, low=0, high=9, mid, x;
for (i = 0; i < 10; i++) //对数组进行冒泡排序
for (j = 0; j < 10 - i-1; j++)
if (a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
for (i = 0; i < 10; i++)//把排序好的数组遍历一遍
printf("%5d", a[i]);
printf("\n");
scanf("%d", &x);//输入指定查找的值
while (low <= high)//元素0到9遍历一遍
{
mid = (low + high) / 2;
if (a[mid] == x)
break;
else if (a[mid] > x)
high = mid - 1;
else
low = mid + 1;
}
if (low <= high)
printf("\n%d at a[%d]", x, mid);
return 0;
}