【问题描述】 针对以非递增有序表表示的静态查找表,编写递归的折半查找算法。 【输入形式】该静态查找表从下标1开始存放数据,存放数据按照非递增顺序,具体输入形式如下: 5 //输入元素个数 33 29 25 20 12 //按照非递增顺序连续输入多个数,每个数之间用一个空格隔开 29 //输入需要查找 ...
分类:
其他好文 时间:
2016-12-04 17:27:22
阅读次数:
182
#include<stdio.h>typedef int KeyType;#define LIST_SIZE 20typedef struct RecordType{ KeyType key; //OtherType other_data;}RecordType; typedef struct Re ...
分类:
其他好文 时间:
2016-12-03 20:56:24
阅读次数:
170
先介绍一个概念,平均查找长度(ASL)为每一个关键字出现的概率*查找该关键所进行比较的次数,所有关键字这样的值之和 一.简单查找 简单查找,也就是一个个地比较了,不多说 时间复杂度分析:while循环最少比较1次,最多比较n次,所以时间复杂度为O(n),另外,平均查找长度为(1+2+....n)*n ...
分类:
其他好文 时间:
2016-12-02 01:30:54
阅读次数:
196
今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容。本篇博客主要介绍查找表的顺序查找、折半查找、插值查找以及Fibonacci查找。本篇博客会给出相应查找算法的示意图以及相关代码,并且给出相应的测试用例。当然本篇博客依然会使用面向 ...
分类:
其他好文 时间:
2016-11-15 11:21:14
阅读次数:
243
折半查找(二分查找)是个常用基础算法了。个人觉得主要注意事项就是不要写递归吧。其实实际应用中递归能不用就不用,压栈出栈效率较低而且递归层级太多容易爆栈。 只要分别维护一个指向当前首尾的值即可消除递归。 实现: 传入一个数组arr(已升序排序)和要找的值k。找到了返回下标,找不到返回-1. ...
分类:
其他好文 时间:
2016-11-13 16:03:34
阅读次数:
126
1、 顺序查找:直接挨个挨个从A找到Z 找到想联系的人; 折半查找:根据你要查找的人的姓名首字母来排除一半的人,直接在它所在的另一半的范围 查找; 索引查找:直接根据你搜出你想要查找的联系人姓名,方可找到; 我认为折半查找的方案更优 2、 相对来说360安全通信录里的拨号功能比较好用,而且操作简单, ...
分类:
其他好文 时间:
2016-11-06 13:48:40
阅读次数:
188
二分查找又叫折半查找。 前提:数组是有序的。 思想:1、每次都拿中间的数的key进行比较,如果相等,找到; 2、如果key > 中间数,说明key在中间数的右边,接着拿右边的中间数和key比较; 3、如果key < 中间数,说明key在中间数的左边,接着拿左边的中间数和key比较; 4、循环上述过程 ...
分类:
其他好文 时间:
2016-11-05 00:09:03
阅读次数:
245
二分查找 线性查找 1.二分查找 2.一棵 二叉树的 遍历方式 如果说 想不没明白怎么回事 那就基础 代表的顺序: if(有左支) indexNum(temp.left); syso //迭代完 左支的 第一句话 if(有右支) indexNum(temp.right); 这个就是 中序便利 ...
分类:
其他好文 时间:
2016-10-25 09:28:06
阅读次数:
394
递归实现: We basically ignore half of the elements just after one comparison.1) Compare x with the middle element.2) If x matches with middle element, we ...
分类:
其他好文 时间:
2016-10-19 01:41:06
阅读次数:
245