public static int binarySearch(int[] args ,int key ){
int upNum = args.length -1;
int lowNum =0;
int mid = lowNum +(upNum-lowNum)/2;
/**int mid =(low + high)
* 2;在一般情况下, 这个语句是不会出错的, 但是, 当low+high的值超过了
* 最大的正int值 (231 - 1) 的时候, mid会变成负值, 这个时候, 会抛出
* ArrayIndexOutOfBoundsException 异常..
*/
int midValue =args[mid];
if(midValue >key){
upNum =mid -1;
}else if(midValue < key){
lowNum = mid +1;
}else{
return key;
}
return -(low+1);//找不到
}
/**
* 线性查找
* 从args中查找key;返回查找到的次数
* foreach
*/
public int linearSearch(int[] args, int key) {
long beginTime = System.currentTimeMillis();
System.out.println(beginTime);
System.out.println(System.currentTimeMillis());
int m = -1;
for (int n : args) {
System.out.println("--------------");
System.out.println(n + "***");
if (n == key) {
System.out.println("--------------");
System.out.println("找到");
long endTime = System.currentTimeMillis();
System.out.println(endTime);
System.out.println(endTime - beginTime);
return m = n;
} else {
continue;
}
}
return m;
}
static int sequenceSearching(int[] arr, int len, int key) {
int i;
for (i = 0; i < len && arr[i] != key; i++);
if (i < len) {// 找到了,因为arr[i]==key
System.out.println(i);
return i;
} else {//没找到
return -1;
}
//return (i<len)?(i):(-1);
}
分享到:
相关推荐
二分查找算法,也称为折半查找,是计算机科学中一种高效的搜索算法,尤其适用于已排序的数据集合。这种算法的基本思想是将数据集分为两半,每次比较中间元素与目标值,根据比较结果缩小搜索范围,直至找到目标值或者...
二分查找的时间复杂度为O(log n),这是因为每次操作都能将搜索范围减半,因此对于大型有序数据集,它比线性查找效率高得多。然而,二分查找的前提是数据必须有序,所以通常适用于已排序的数组或链表。 在C++中实现...
在VC++中,我们可以使用二分查找、哈希表、B树等更高效的算法来优化文件查找过程。例如,如果文件名是有序的,二分查找可以显著提高查找速度,时间复杂度为O(log n)。而哈希表可以实现近乎常数时间的查找,但需要...
常见的方法包括线性搜索(逐个检查记录)和二分查找(适用于已排序的数据)。线性搜索相对简单,但效率较低;二分查找则需要对数据进行预处理,但搜索速度更快。 例如,如果我们有一个按id排序的记录列表,可以这样...
二分查找将数组分成两半,每次比较中间元素,直到找到目标或确定目标不存在。不过,这个题目没有提及排序,所以我们将重点放在基本的线性搜索上。 为了在实际的C++程序中使用这个查找功能,你需要先定义数组,然后...
在计算机科学中,折半查找(也称为二分查找)是一种高效的查找算法,尤其适用于已排序的数据集合。本文将深入探讨折半查找算法的概念、原理、实现方式,并以C语言为例,详细介绍如何在VC6.0++环境中实现这一算法。 ...
插值查找的效率介于线性查找和二分查找之间,具体实现如下: ```cpp int interpolationSearch(int arr[], int l, int r, int x) { while (l <= r && x >= arr[l] && x [r]) { int pos = l + (x - arr[l]) * (r - ...
总结来说,“helper_Vc_”这个压缩包提供了C++实现的三种查找算法的核心源码,它们分别是二分查找、插值查找和斐波那契查找。通过学习这些代码,开发者可以更好地理解和掌握在不同场景下如何选择和实现高效的查找...
2. **排序链表**:如果链表中的元素是有序的,我们可以通过二分查找法来提高查找效率。但单链表无法像数组那样随机访问,所以实际的二分查找需要对链表进行特殊处理。首先,我们需要实现一个支持在链表中进行中间...
查找算法可以分为两种基本类型:线性查找和二分查找。对于小规模数据,线性查找(即顺序查找)效率足够;但当数据量增大时,二分查找(如果数据已排序)的性能更优。然而,由于Tree-View控件的结构特性,通常不适用...
第五章:可能涉及到查找算法,如线性查找、二分查找、哈希查找等。其中,二分查找在有序数组中的效率特别高,而哈希查找通过散列函数实现快速查找。 第六章:可能会讨论动态规划,这是一种解决复杂问题的有效方法,...
6. 查找算法(如顺序查找、二分查找、哈希查找)的细节。 7. 在VC环境下如何利用MFC或STL提高代码的可读性和效率。 总之,严蔚敏版数据结构的C和VC源代码是学习和实践数据结构的宝贵资源,通过阅读和实践这些代码,...
包括牛顿迭代法、二分查找法、插值法等,用于求解非线性方程或方程组。 四、数值微分与积分 数值微分可以用于求导数,常见的有向前差分、向后差分和中心差分;数值积分则用来估算函数的面积,比如矩形法、梯形法和...
- **搜索算法**:二分查找、线性查找等,用于在数据集中找到特定元素。 - **树结构**:二叉树、平衡二叉树(AVL、红黑树)、B树、B+树等,用于高效的查找、插入和删除操作。 - **图算法**:深度优先搜索(DFS)、...
这可能涉及到线性扫描或者使用更复杂的算法,如二分查找或哈希表映射。 6. **动态追踪**:为了适应程序运行时的内存变化,可能需要动态追踪内存地址,因为程序运行时内存布局可能会发生变化。 7. **内存结构分析**...
此外,为了提高效率,可以使用二分查找等优化方法。总之,理解并熟练掌握顺序表的这些基本操作,是学习数据结构和算法,乃至进行软件开发的基础。通过VC这样的工具,可以更直观地理解和实践这些概念。
查找算法如线性查找、二分查找、哈希查找,其中二分查找适用于有序数组,哈希查找提供快速的查找服务。图算法如深度优先搜索(DFS)和广度优先搜索(BFS),以及最短路径算法(Dijkstra、Floyd-Warshall、Bellman-...
3. 算法的C++实现:如何编写排序算法(如冒泡排序、插入排序、快速排序)、查找算法(如线性查找、二分查找)等。 4. 面向对象编程:如何利用C++的继承、封装和多态性来设计和实现复杂系统。 5. 使用Visual C++ IDE...
折半查找(也称为二分查找)是基于排序数组的一种高效查找方法,它通过比较中间元素和目标值来逐步缩小搜索范围,平均时间复杂度为O(logn)。 2. **二叉排序树**:二叉排序树是一种特殊的二叉树,其左子树上的所有...
- **二分查找**:如果文件名按某种排序存储,可以使用二分查找,但通常文件系统不保证这种顺序。 - **索引**:操作系统可能已为文件系统创建了索引,可以利用这些索引进行快速查找。在Windows中,文件资源管理器就...