在数据的查找这个问题上,如果查找的数据集是有序线性表,并且是顺序存储的,查找可以使用折半、插值、斐波那契等查找算法实现,可惜,因为有序,在插入和删除操作上,就需要耗费大量的时间。那么有没有一种可以使得插入和删除的效率不错,又可以比较高效地实现查找的算法呢?也就是说有没有一种算法能够使用与动态查找。动...
分类:
编程语言 时间:
2015-09-27 16:05:55
阅读次数:
179
最近看见一个要求仅使用加法减法实现二分查找的题目,百度了一下,原来要用到一个叫做斐波那契查找的的算法。查百度,是这样说的:斐波那契查找与折半查找很相似,他是根据斐波那契序列的特点对有序表进行分割的。他要求开始表中记录的个数为某个斐波那契数小1,即n=F(k)-1;开始将k值与第F(k-1)位置的记录...
分类:
其他好文 时间:
2015-09-25 23:06:11
阅读次数:
352
折半查找函数#include<stdio.h>
inthalf_search(intarr[],intfirst,intlast,intn)
{
intmid=0;
while(first<=last)
{
mid=(first+last)/2;
if(n<arr[mid])//若要查找的数字小于中间数,则在前一半查找
{
last=mid-1;//范围缩小
}
elseif(n>arr[mid])//若大于中..
分类:
编程语言 时间:
2015-09-25 16:36:19
阅读次数:
152
关于“排序数列中元素出现次数问题”,这里采用折半法给出两种思路: 1、找到元素在数组中的一个索引位置,由于是数组是有序排列,所有在这个位置左右移动,就可以找出其所有出现的位置; 2、通过折半法找到元素的最大索引位置与最小索引位置,然后两个索引位置相减再加一,就是元素的出现的次数。 ...
分类:
编程语言 时间:
2015-09-23 11:47:27
阅读次数:
189
二分查找(BinarySearch)又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如..
分类:
编程语言 时间:
2015-09-19 06:21:13
阅读次数:
170
4.3 折半查找 对于有序数组的查找来说,折半查找是一种性能卓越的算法。它通过比较查找健K和数组中间元素A[m]来完成查找工作。如果它们相等,算法结束。否则,如果KA[m],则对数组的右半部分执行该操作。 折半查找是基于递归思想的,但也可以以迭代方式实现。 代码实现: /** * 折半查找(递归方式...
分类:
其他好文 时间:
2015-09-18 21:53:47
阅读次数:
257
importjava.util.Random;/*** 排序测试类** 排序算法的分类如下: *1.插入排序(直接插入排序、折半插入排序、希尔排序); *2.交换排序(冒泡泡排序、快速排序);* 3.选择排序(直接选择排序、堆排序); *4.归并排序; *5.基数排序。** 关于排序方法的选择: *...
分类:
编程语言 时间:
2015-09-16 19:36:15
阅读次数:
413
1 #include 2 #include 3 4 int binsearch(int x,int v[],int n);//函数声明 5 6 int main() 7 { 8 int arr[]={1,2,3,4,5,6,7,8,9,10}; 9 int 结果,num;10...
分类:
编程语言 时间:
2015-09-13 00:55:57
阅读次数:
230
线性表查找算法顺序查找折半查找(线性表必须是已经排序好的) 1 /**折半查找 2 * @param obj 3 * @param value 4 */ 5 public static void halfSort(int[] obj,int value...
分类:
编程语言 时间:
2015-09-10 20:55:03
阅读次数:
173
一.while条件:while(low val2,return 1;三.注意low = center + 1和high = center - 1; 1 public class BinarySeacher { 2 public static final int NOT_FOUND = -1...
分类:
其他好文 时间:
2015-09-10 20:54:10
阅读次数:
106