#include <stdio.h>
#define maxSize 100
#define num 4
int R[maxSize] = { 0 };
int count = 0;
/*********输入数据*********/
void Indata()
{
printf("请输入整数数据(按回车键停止输入):");
int i = 0;
char ch;
while (1)
{
scanf_s("%d", &R[i]);
i++;
count++;
ch = getchar();
if ('\n' == ch)
break;
}
}
/*******顺序查找*******/
int Search_Seq(int r[],int n)
{
int i=0;
int key;
printf("请输入您要查找的数值:");
scanf_s("%d", &key);
printf("顺序查找:\n");
while (r[i] != key)
i++;
if (i < n)
{
printf("位置:%d 数值:%d", i, r[i]);
return i;
}
else
{
printf("查找无该值");
return -1;
}
}
/***********折半查找*********/
//仅适用于有序的顺序表
int Binary_Search(int r[],int low,int high)
{
int mid;
int key;
printf("请输入您要查找的数值:");
scanf_s("%d", &key);
printf("折半查找:\n");
while (low <= high)
{
mid = (low + high) / 2;
if (r[mid] == key)
{
printf("位置:%d 数值:%d", mid, r[mid]);
return mid;
}
else if (r[mid] > key)
high = mid - 1; //从前半部分继续查找
else
low = mid + 1; //从后半部分开始查找
}
printf("查找无该值");
return -1;
}
void main()
{
Indata();
//Search_Seq(R, count);
printf("\n");
Binary_Search(R,0, count - 1);
system("pause");
}
