对c语言的认识和想法 c语言中的折半排序法是怎样的,基本程序是怎样的?
c语言中的折半排序法是怎样的,基本程序是怎样的?
半法应称为两点法。如果要查找的数字是20,则数组是1478 20 30 34。每次你把中间的数字和你想比较的数字,也就是8和20比较,你会发现20比8大,所以你不需要左边的数字,剩下的数字是20 30如果你拿20和30,你会发现20比30小。如果你取20和20相等,你就会找到它。如果不是,返回-1。这是程序。#半搜索法也称为二进制搜索法。它充分利用了元素之间的顺序关系,采用分治策略,在最坏情况下可以用O(logn)完成搜索任务。例如,排序后的数据是15 12 35 64 78 89 123 456。如果要查找12,请先将12与上述9个数字中的中间数字(64)进行比较,12< 64按上述顺序排列,因此您找到的数据位于前半部分,即15 12 35 64,然后将12与前半部分的中间数字(12)进行比较。这样,您可以在两次搜索后找到一半。半搜索的目的是提高搜索效率
C语言中的“折半查找法”是什么?
#include<stdio.h>
int seek(int*pArr,int low,int high,int num)
void main()
{
int Arr[]={1,2,3,4,5,6,7,8,9,10}
int find,num
printf(“输入要查找的数值。n”)
scanf(“%d”,&num)
find=seek(Arr,0,9,num)
if(find==-1)printf(“num=%d未找到!n“,num)
否则printf(”num已找到!narr[%D]=%Dn,find,arr[find])]}
int seek(int*Parr,int low,int high,int Num)
]{//Parr是数组的名称。数组必须按顺序排列(这是二分法的要求),这里按从小到大的顺序排序
int mid
mid=(低-高)/2
if((低>=高)&(Parr[mid]!=Num))
return-1
]{
]if(Parr[mid]==Num)
return mid
]else if(Parr[mid]>num)
high=mid 1//中间数大于要检查的数,表示它可能在中间段之前
else
Low=mid-1//同上,它可能在中间段之后
return seek(Parr,low,high,Num)//递归
}]}
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。