c语言二分法查找法的完整代码 静态查找与动态查找定义?
静态查找与动态查找定义?
静态查找定义了:。
静态搜索是我们通常概念中的搜索,它是一个 "真实搜索 "。
静态搜索之所以是真正的搜索,是因为在静态搜索的过程中,只有 "搜索和搜索被执行,即:
(1)检查特定关键字是否在表中(判断搜索);
(2)检索特定关键字数据元素的各种属性(检索搜索)。
这两个操作只获取现有表中的数据信息,而不对表的数据元素和结构进行任何更改,这称为静态查找。
常见的静态查找(表):顺序查找、二分法查找、索引顺序查找(块查找)、斐波那契查找等。
动态搜索定义:
动态查找更像是一个 "创建、扩展、修改和删除 "一张桌子。
在动态查找的过程中,表上还会有两个操作:
(1)首先,有一个 "判断性搜索和搜索。如果表中不存在某个特定的关键字,它会按照一定的规则插入到表中;
(2)如果已经存在,可以删除。
虽然动态查找的过程只是添加 "插入 "和 "删除 "操作,在特定的表上执行这两个操作通常不是那么简单。
常见的动态搜索:各种树(二叉查找树,AVL,B/B树,红黑树等。)和哈希表。
关于数据结构二分法查找成功的平均查找长度和失败的查找长度?
做这类题目的时候要画二叉树。然后补叶子。叶子的高度是搜索失败的次数。然后总和除以叶子数就是失败的平均搜索长度。非叶节点是成功的,高度就是搜索成功的次数,然后除以非叶节点的次数就是成功的平均长度。对于11个节点,二叉树的搜索成功长度为(1x2x3x4x4)/1133/11,搜索失败长度为(4x8 3x4)/(8 4)44/12。
最早的二分查找代码什么时候出来的?
推荐答案的代码有问题,不考虑要搜索的数字下标为0怎么办?因此,如果序列表中没有要检查的元素,则应该返回-1。
另外,主函数的最后两行调用了两次查找函数,所以代码不够简洁。
建议阅读:
# inclusive lt stdio . HGT # inclusive lt stdlib . HGT int search(int * a,int key){//在序列表中找到key对半的数据元素。如果找到,函数值是int low 0,mid //这个元素的数组下标;否则为0。int high 14 while(low lt high){ mid(low high)/2 if (key a[mid]) return mid //找到要搜索的元素else if (key lt a[mid]) high mid-1 //继续搜索else low mid 1 //后半部分继续搜索} return -1 //序列表中没有要搜索的元素} Void main () {int * a,key,i int b [15] {0} a b printf(请输入15个从小到大的整数:
)for (i 1 i lt 15 i ) { scanf(%d
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。