1、打开Python开发工具IDLE,新建‘search.py’。
2、F5运行程序,list1被正确排序,写这个的目的是说明二分法查找必须前提是一个有序的列表,如果一开始无序首先要排序,当数据量大的时候,快速排序是一个很好的选择,再进行二分法查找。
3、用递归的思想,递归就一定有结束条件。
4、if len(li)==1: #li长度等于1,只比较这个列表元素与要查找到值return li[0]==item。
5、if len(li)==0: #li长度等于0,全部查找结束还是没有这个值 return False。
6、为程序添加main方法。
7、F5运行程序,正确打印出二分法查找结果,False True。
举个例子://二分查找法//
#
include
void
main()
{
int
a[16],i,num,flag=0,top,bottom,mid
//定义一个一维数组a[16]用来存放供查找用的数据,但只用a[1]——a[15]//
//num用来放要查找的数据,flag是表示是否找到的开关变量,top表示查找的起始位置,bottom表示查找的终止位置,mid表示top与bottom的中间位置//
char
goon
//变量goon为'y'或'Y'时表示继续下一轮查找,否则终止程序//
printf("请输入第1个数字:\n")
scanf("
%d",&a[1])
//依次输入第二到第十五个数,并要求输入的数递减//
for(i=2i<=15i++)
{
printf("请输入第%d个数字:\n",i)
scanf("
%d",&a[i])
if(a[i]>=a[i-1])
{
printf("请再次输入,它应该比上一个数小:\n")
scanf("
%d",&a[i])
}
}
//输出刚才输入的数//
printf("你刚才输入的数是:\n")
for(i=1i<=15i++)
printf("
%d",a[i])
printf("\n")
//查找循环开始//
do
{
printf("现在请输入你要查找的数:\n")//输入想要查找的数//
scanf("
%d",&num)
top=15
bottom=1
mid=15/2+1
if(num>a[1]
||
num
0)//如果在规定的范围内,开始二分法查找//
{
if(num==a[mid])//找到所需数据,退出本层循环//
{
printf("你所要查找的数字是第%d个。\n",mid)
flag=1
}
else
if(num>a[mid])//如果要查找的数据比a[mid]大,在前半数组查找//
{
top=mid+1
mid=(top+bottom)/2
}
else
//如果要查找的数据比a[mid]小,在后半数组查找//
{
bottom=mid-1
mid=(top+bottom)/2
}
}
if(flag==0)//如果未找到数据,输出找不到的信息//
printf("无法找到你要找的数字!\n")
printf("是否继续查找?(Y/N):\n")//询问是否开始下一轮查找//
scanf("
%c",&goon)
}while(goon=='y'
||
goon=='Y')
}
#include <stdio.h>#include <math.h>
int main() {
double x0, x1, x2, f0, f1, f2
do {
printf("请输入两个点:")
scanf("%lf,%lf", &x1, &x2)
f1 = ((2 * x1 - 4) * x1 + 3) * x1 - 6 //换成你自己的 方程
f2 = ((2 * x2 - 4) * x2 + 3) * x2 - 6 //换成你自己的 方程
printf("f1 = %f, f2 = %f\n", f1, f2)
} while (f1 * f2 >0)
do {
x0 = (x1 + x2) / 2
f0 = ((2 * x0 - 4) * x0 + 3) * x0 - 6
if (f0 * f1 <0) {
x2 = x0
f2 = f0
}
else {
x1 = x0
f1 = f0
}
} while (fabs(f0) >= 0.00001)
printf("方程根为:%lf\n", x0)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)