赞
踩
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//输入变量
int n = -1;
int dichotomy(int num, int nums[]) { //这里用函数将二分法定义,方便调用。
int length = sizeof(nums) / sizeof(num); //sizeof是求长度的,具体细节百度
int i = 0;
int j = length - 1;
int mid;
while (i <= j) {
mid = i + (j - i) / 2; //求出范围的中间值
if (num == nums[mid]) { //第一种情况直接取到中间值
n = mid;
break;
}
else if (num > nums[mid]) { //第二种情况num比中间值大取上半区的
i = mid + 1;
}
else if (num < nums[mid]) { //第三种情况num比中间值小取下半区的
j = mid - 1;
}
}
if (n == -1) {
printf("对不起,数组中不存在该元素");
}
else {
printf("%d的索引为%d", num, n);
}
return 0;
}
int main(){
int x;
scanf("%d", &x);
//定义有序数组
int y[] = { 1,3,5,6,7,9,23,26,29,41,45,67,89,93 };
dichotomy(x,y); //因为函数定义在前面直接调用
return 0;
最后,二分法的作用就是优化程序,可以有效的减少运算时间。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。