查找(二)
散列表
散列表是普通数组概念的推广。由于对普通数组可以直接寻址,使得能在O(1)时间内访问数组中的任意位置。在散列表中,不是直接把关键字作为数组的下标,而是根据关键字计算出相应的下标。
使用散列的查找算法分为两步。第一步是用散列函数将被查找的键转化为数组的一个索引。
我们需要面对两个或多个键都会散列到相同的索引值的情况。因此,第二步就是一个处理碰撞冲突的过程,...
分类:
其他好文 时间:
2014-05-22 13:27:19
阅读次数:
421
/// /// 步骤: /// 1.记录当前待排元素 /// 2.标记顺序表有序查找区域下界和上界
/// 3.在顺序表有序查找区域中折半查找等待排序元素的位置 /// 4.把顺序表有序查找区域的某些元素后移一位,以空出位置给等待排序的元素 ///
5.在空出的位置填写当前排序元素 ...
分类:
其他好文 时间:
2014-05-21 17:18:45
阅读次数:
215
条件C(x):=可以选择是单位重量的价值不小于x,则该问题就变成了满足C(x)的最大的x,那么怎么判断C(x)是否可行呢?假设我们选了某个物品的集合S,那么它们的单位重量价值是:因此就变成了判断是否存在s满足下面条件:把这个不等是进行变形就得到//#define
LOCAL#include//#in...
分类:
其他好文 时间:
2014-05-19 22:31:12
阅读次数:
363
//#define LOCAL#include#includeusing namespace
std;int const MAX_N=10005;int const MAX_M=100;int const INF=100000000;int
N,M,x[MAX_N],lb,ub;//判断是否满足条件...
分类:
其他好文 时间:
2014-05-18 19:38:50
阅读次数:
378
二分搜索思想:bool C(double x)可以得到长度为x的绳子//#define
LOCAL#include#includeint const MAX_N=10005;int const MAX_M=100;double const
INF=100000000;int N,K;double d...
分类:
其他好文 时间:
2014-05-17 00:13:44
阅读次数:
271
二分查找又称折半查找,它是一种效率较高的查找方法。折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。
折半查找是一种高效...
分类:
编程语言 时间:
2014-05-16 07:10:02
阅读次数:
329
适配器模式
现有一个接口DataOperation定义了排序方法sort(int[]) 和查找方法search(int[], int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch 的binarySearch(int[], int)方法实现了二分查找算法。现使用适配器模式设计一个系统,在不修改源代码的情况下将类QuickSort和类BinarySearch的方法适配到DataOperation接口中。绘制类图并编程实现。 (要求实现快速排序和...
分类:
编程语言 时间:
2014-05-15 23:07:47
阅读次数:
423
//功能:二分查找import java.util.*;public class Demo1 {
public static void main(String[] args) { int arr[]={2,5,7,12,25};//定义arr数组并赋值
System.out.print("请输入你需...
分类:
编程语言 时间:
2014-05-15 22:11:22
阅读次数:
421
顺序查找的时间复杂度是O(n),如果数组一开始是有序的,那么用顺序查找的效率是比较低的,因为二分查找等方式能够拥有更低的时间复杂度,但是如果一开始是无序的,那么顺序查找有可能比其他查找更加的快速。
二分查找主要是应用在有序的数组织中,采取的是一种分治的思想,先在数组中去中值,然后将中值...
分类:
其他好文 时间:
2014-05-13 20:27:07
阅读次数:
251