`
JS小吴
  • 浏览: 5055 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

数据结构二有序数组&二分查找

 
阅读更多
有序插入:如果已有数组本来就是乱的,可以先排序下,排序还没复习到,呵呵,就先用已经是有序的数组(升序)做实验。思路还是线性查找数组,从第一个开始查找,查到到了比该数据大的即可,记录下这个位置标示,然后将所有数据往后移动一位,腾出这个空,将数据插入即可。
二分查找:OO说了个很形象的比喻,就像电视猜商品价格一样,上限10000,然后你猜5000,主持人会告诉你是大还是小,大了就接着猜2500,小的话就接着7500,如此下去既可以了。代码如下,只是考虑思想,代码实现上时间空间复杂度有不足。
public void insert(long value) {// 插入数据
		int i;
		for (i = 0;  i < elems; i++) {
			if(arr[i] > value) {
				break;
			}
		}
		for(int j = elems; j > i;j--){
			arr[j] = arr[j - 1];
		}
		arr[i] = value;
		elems++;
	}
	public int binaryFind(long searchKey) {// 二分法查找
		int ins = 0;
		int low = 0;
		int pow = elems;
		while(true) {
			ins = (low + pow) / 2;
			if(arr[ins] == searchKey) {
				return ins;
			} else if(low > pow){
				return -1;
			} else {
				if (arr[ins] > searchKey) {
					pow = ins - 1;
				} else {
					low = ins + 1;
				}	
			}
		}
          }
分享到:
评论

相关推荐

    C#做的有序数组

    查找元素在有序数组中可以通过二分查找法实现,其效率显著高于线性查找。基本步骤包括: 1. 设置查找范围的起始和结束索引。 2. 如果起始索引大于结束索引,表示未找到元素。 3. 否则,计算中间索引,比较中间元素与...

    文件读出数组进行选择排序和二分查找(java)

    4. **二分查找**:二分查找又称折半查找,是一种在有序数组中查找特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是目标值,则搜索结束;如果目标值大于或小于中间元素,则在数组大于或小于...

    数组应用&二维数组.doc

    二分查找是在有序的数组中进行查找的方法。注意,使用二分查找,必须是在有序的数组中。 4. 数组的使用思想 数组的特点是: * 数组是一个容器,可以存放相同类型的数据 * 数组有容量大小,使用length属性可以获取...

    Python实现二维有序数组查找的方法

    一种直观的方法是对每一行分别进行二分查找,但这可能会导致效率较低,因为每次只能排除一部分元素,而不能一次性剔除一行或一列。 更好的方法是采用“边界移动”策略。从数组的右上角元素开始,即最大值所在的位置...

    有序数组的折半查找

    折半查找,又称二分查找,是一种在有序数组中查找特定元素的搜索算法。相比传统的顺序查找,它具有更高的效率,尤其是在大型数据集上。折半查找的基本思想是利用数组的有序性,通过每次将查找区间缩小一半来快速定位...

    数据结构 二分查找 上机实验

    ### 数据结构之二分查找详解及上机实验 #### 一、引言 在计算机科学领域,二分查找(Binary Search)是一种高效的查找算法,它适用于已排序的数组或列表。该算法通过不断地将查找区间减半来缩小查找范围,从而达到...

    二分查找 杨辉三角 数组便利

    二分查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或...

    二分查找.docx 二分查找(Binary Search)是一种在有序数组中查找特定元素的算法 该算法的基本思想是先确定待查找区

    - **空间复杂度**:由于二分查找不使用额外的数据结构存储数据,因此空间复杂度为O(1)。 #### 五、应用场景 二分查找适用于多种场景,包括但不限于: 1. **数据库查询**:在数据库系统中,对于已经排序的数据,使用...

    二分查找(Binary Search)是一种在有序数组中查找某一特定元素的搜索算法.txt

    二分查找算法,也称为折半查找算法,是一种在有序数组中查找特定元素的高效搜索方法。该算法的基本思想是通过比较数组中间元素与目标值的大小,将搜索范围缩小到一半,这样每次比较都可以将待查找区间减半,从而达到...

    数据结构实验二分查找

    在这个实验报告中,我们关注的是“二分查找”这一数据结构算法,这是一种在有序列表中查找特定元素的方法。 二分查找算法的基本思想是利用排序后的数据特性,每次查找都将搜索范围减半。这种方法极大地提高了查找...

    课堂笔记06(二分查找-二维数组-数组的复制)共2页.pd

    二分查找,也被称为折半查找,是一种在有序数组中查找特定元素的搜索算法。其基本思想是将数组分成两半,然后比较中间元素与目标值,如果目标值等于中间元素,查找结束;如果目标值小于中间元素,则在左半部分数组中...

    数据结构二分查找 希望能帮助到你们

    二分查找,也被称为折半查找,是一种在有序数组中高效寻找特定元素的搜索算法。在数据结构领域,它属于线性查找的一种优化版本。二分查找的思想是利用数组的有序性,通过每次将查找范围减半来快速定位目标值。这种...

    数据结构C语言 数组链表,树,图,矩阵,搜索查找

    二分查找适用于有序数组,其时间复杂度为O(log n)。哈希表提供了一种快速查找的方法,通过哈希函数将键映射到表的特定位置,达到近乎即时的查找速度。 总的来说,这个资料包涵盖了数据结构的关键概念,通过C语言...

    详解Java数据结构和算法(有序数组和二分查找)

    Java 数据结构和算法:有序数组和二分查找 在 Java 程序设计中,数据结构和算法是非常重要的两个概念。本篇文章主要介绍了有序数组和二分查找的相关知识点。 一、概述 有序数组是一种特殊的数组结构,它的元素...

    java数组二分查找

    二分查找是一种在有序数组中寻找特定元素的搜索算法,其效率显著高于线性查找。本篇文章将详细探讨Java中的二分查找及其应用。 首先,我们要了解什么是数组。在计算机科学中,数组是一种数据结构,它存储了一组相同...

    C++数据结构折半查找法(二分查找)

    二分查找法是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,每次比较中间元素与目标值,然后根据比较结果决定是在左半部分还是右半部分继续查找。通过不断缩小搜索范围,直到找到目标元素...

    查找数组中的数

    通过学习这个主题,你可以进一步扩展到更复杂的数据结构,如二分查找、哈希表以及排序算法,这些都是提高数组查找效率的关键。同时,理解这些基本概念将有助于你更好地理解和使用各种编程库,例如 LINQ(Language ...

    深入理解二分查找(一、二分查找及其变体)

    在实际应用中,二分查找可以与各种数据结构结合,如堆、平衡二叉搜索树等,提升搜索性能。例如,对于二维有序数组的搜索,可以先对第一列进行二分查找,找到可能的行,然后再在选定的行内进行一次一维二分查找。 **...

    数据结构实验六(二分查找、Hash查找)题目和源程序

    二分查找是一种在有序数组中查找特定元素的高效算法。为了使用二分查找,数组必须是按照升序或降序排列的,并且通常采用顺序存储结构。 **基本思想:** 1. **初始化搜索范围:** 定义两个指针,`low` 和 `high`,...

    第03章 方法与数组 10 二分查找算法

    在学习二分查找的同时,也要注意其适用条件:二分查找仅适用于有序数组,如果数据结构无序,如链表,就不能直接应用二分查找。此外,对于动态更新的数组,如插入或删除元素,需要重新排序后才能进行二分查找。 总的...

Global site tag (gtag.js) - Google Analytics