用折半查找法进行查询

如何用折半查找法进行查询

要求

在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.

代码奉上
#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>


int main() {
	
	int l, r, mid,n;

	l = 0;

	char str[10] = { 0,1,2,3,4,5,6,7,8,9 };

	printf("请输入你要查找的值\n");
	scanf("%d", &n);
	r= sizeof(str) / (sizeof(str[0]))-1;
	mid = (r + l) / 2;
	while (l <= r) {
       
	   if (n > str[mid]) {
		l = mid + 1;
	    }
	   if (n < str[mid]) {
		   r = mid - 1;
	   }
	   if(n==str[mid]) {
		   printf("%d\n", mid);
		   break;
	   }
      mid = (r + l) / 2;
	}
	if (l > r)return -1;
	
	system("pause");
	return 0;

	
}

代码分析

折半查找法远远的降低了查找时间,但是仅仅用于有序数列中。

其中小" tips"

	r= sizeof(str) / (sizeof(str[0]))-1;

利用sizeof函数得到数组的长度。
一般情况下也可以引入头文件

#include<string.h>

strlen(str);

得到函数长度。

发布了29 篇原创文章 · 获赞 10 · 访问量 7501

猜你喜欢

转载自blog.csdn.net/qmqm33/article/details/93387065