2016 - 2024

感恩一路有你

对c语言的认识和想法 c语言中的折半排序法是怎样的,基本程序是怎样的?

浏览量:2968 时间:2021-03-12 11:29:44 作者:admin

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)//递归

}]}

对c语言的认识和想法 折半排序法怎么排的 c语言有什么用

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。