`

自定义有序数组_用二分法查找数据

 
阅读更多
/**
 * java 模拟有序数组
 * @author zm
 */
public class MyOrderArray {

	private int size; // 实际个数
	
	private int[] arr;
	
	private int max; // 数组最大长度

	public MyOrderArray(){
		arr = new int[10];
		max = 10;
	}
	
	public MyOrderArray(int size){
		arr = new int[size];
		max = size;
	}
	
	// 升序增加
	public void insert(int val){
		int i;
		for(i=0; i<size;i++){
			if(val < arr[i]){ // 记录插入点
				break;
			}
		}
		// 插入数据时, 移动数据要从后开始移动
		for(int j=size; j>i;j--){
			arr[j] = arr[j-1];
		}
		arr[i] = val;
		size++;
	}
	
	// 展示数组内数据
	public void display(){
		if(this.size > 0){
			System.out.print("[");
			for(int i=0; i<size; i++){
				System.out.print(arr[i] +" ");
			}
			System.out.print("]");
		}else{
			System.out.print("[]");
		}
	}
	
	
	// 二分法查找数据
	public int binarySearch(int val){
		
		int low = 0;
		int mid = 0;
		int high = size;
		
		while(true){
			mid = (low + high) / 2;
			if(high < low){
				return -1;
			}else{
				if(arr[mid] == val){
					return mid;
				}else{
					if(arr[mid] < val){
						low = mid + 1;
					}
					if(arr[mid] > val){
						high = mid - 1;
					}
				}
			}
			
		}
		
	}
	
	
	
	
	
	
	public static void main(String[] args) {
		
		MyOrderArray array = new MyOrderArray();
		array.insert(90);
		array.insert(30);
		array.insert(80);
		array.insert(10);
		
		array.display(); // [10 30 80 90 ]
		
		System.out.println("");
		
		int index = array.binarySearch(31);
		System.out.println(index);
		
	}

	
}


 

 

 

分享到:
评论

相关推荐

    在数组中查找数据PPT学习教案.pptx

    二分法查找则适用于有序数组,它通过不断将查找区间折半来提高效率。算法首先找到数组的中间元素,然后比较目标值与中间元素的关系,根据比较结果缩小查找范围。这种方法的优点是查找速度快,查找次数以对数增长,但...

    二分法查找在PLC编程中的应用.pdf

    二分法查找是一种高效的查找算法,在有序数组中尤其适用。其基本思想是从已排序数组的中间元素开始查找,如果目标值与中间元素相等,则查找成功;如果目标值小于中间元素,则在数组的左半部分继续查找;如果目标值...

    C++二分法在数组中查找关键字的方法

    功能: 实现数组的二分法查找(只算法只适合按从小到大排列的数组) 返回值:关键字在数组中的下标, 返回-1表示未找到 a[]: 要搜索的数组 len: 数组元素个数 key: 要查找的关键字 */ int binSearch(int a[], int ...

    java数组与简单排序

    本主题将深入探讨“java数组与简单排序”,涵盖有序数组、线性查找和二分法查找等核心概念。 有序数组是指数组中的元素按照特定顺序排列,例如升序或降序。在处理有序数组时,我们可以利用其特性来优化查找和操作...

    做一个集合类,并按索引二分法查找,继承IComparer、IComparable、ICollection

    二分法查找是一种在有序数组中查找元素的高效算法,平均时间复杂度为O(log n)。在实现二分查找之前,确保你的集合是有序的(可以通过`OrderBy`方法实现)。以下是二分查找的代码示例: ```csharp public Student ...

    javascript 二分法(数组array)

    在JavaScript中,我们可以利用`prototype`关键字为内置对象如Array添加自定义方法,以实现二分法查找。 以下是一个在JavaScript中为Array对象添加二分法查找功能的示例: ```javascript Array.prototype.binary...

    VC++6.0 实现计算方法中的二分法

    二分法,又称折半搜索法,是一种在有序数组中查找特定元素的搜索算法。它以其高效的性能在计算方法中占据重要地位,特别是在解决数值计算问题时,如求解方程的根、优化问题和搜索特定值。在VC++6.0环境下实现二分法...

    ASP.NET-[其他类别]顺序表字典二分法逐级检索源码.zip

    二分法,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。其基本思想是将数组分为两个部分,每次比较中间元素与目标值,然后根据比较结果决定是在左半部分还是右半部分继续查找。这种方法的效率较高,...

    java数据结构测试题及答案解析.doc

    - 二分法查找是一种在有序数组中查找特定元素的算法,它通过不断将查找区间折半来缩小搜索范围,提高查找效率。适用于顺序存储的有序线性表,不适用于链表。 2. **过程设计工具**: - PDL(过程设计语言)、PAD图...

    易语言二分法求函数零点源码

    二分法,也称为折半查找法,是一种在有序数组中寻找特定元素的有效算法。在数学和计算中,二分法也被用于求解某些类型的问题,如找到连续函数的零点。在易语言中,我们可以利用二分法来寻找一个函数的零点,即找到...

    ASP.NET源码——顺序表字典二分法逐级检索.zip

    3. **二分法**:二分查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。它通过比较中间元素与目标值,将搜索范围不断缩小,从而在平均情况下达到O(log n)的时间复杂度。在这个项目中,二分法可能被...

    数据结构(Java版)第四版 叶核亚编著,习题解答

    文件`08.2 二分法查找 【习题解答8-9】`可能包含如何在有序数组中使用二分查找法查找特定元素的示例。 8. **二叉排序树**:二叉排序树是二叉树的一种,它的左子树只包含小于根节点的元素,右子树只包含大于根节点的...

    易语言源码对分.rar

    二分查找(也称对分查找)的基本思想是将有序数组分为两半,每次比较中间元素与目标值,根据比较结果决定是在左半部分还是右半部分继续查找,直到找到目标值或者搜索范围为空。这种方法的时间复杂度为O(log n),大大...

    erfenfa.rar_DEMO

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

    sas_sas_SAS宏程序开发_

    二分法,又称折半查找,是一种高效的算法,用于在一个有序数组中查找特定元素。在SAS中,可以利用二分法进行变量的重要性评估或筛选。例如,我们可以先对所有变量按照某种标准(如方差、相关性等)排序,然后通过宏...

    二级C语言概念

    本篇文章主要讲解了数据的独立性、实体完整性约束、参照完整性约束、用户自定义的完整性约束等概念,并且讨论了算法的有穷性、数组定义、线性结构和非线性结构、栈的特点、链式存储结构、叶子结点个数的计算、快速...

    IBM XL C/C++ for AIX, V11.1 Standard C++ Library Reference

    - **`binary_search`**:在有序范围内使用二分法查找特定值。 - **`copy`**:将一个范围内的元素复制到另一个范围。 - **`copy_backward`**:与`copy`类似,但以逆向方式复制元素。 - **`count`**:计算指定范围...

    浙江省高校计算机等级考试大纲(二级——C语言程序设计大纲)

    * 检索(查找)算法:包括无序数据序列的查找和有序数据序列的查找(二分法)。 * 遍历算法:包括一维数组和二维数组的遍历、单向链表的遍历、文件的遍历等。 本大纲旨在培养高校学生的计算机编程能力和解决问题...

    8中排序算法(java实现)

    - **二分法插入排序**:改进了直接插入排序,通过二分查找确定插入位置,减少了比较次数,提高了效率。 - **希尔排序**:基于插入排序,通过将元素按照一定间隔分组进行排序,然后逐渐减小间隔,最后整个数组完成...

    2021-2022计算机二级等级考试试题及答案No.4830.docx

    2. 二分法检索:这是一种在有序数组中查找元素的高效方法,要求线性表以顺序方式存储并且已经按照关键码值排序,正确答案是A。 3. Internet Explorer 的功能:收藏夹功能允许用户保存感兴趣的网址,方便以后快速...

Global site tag (gtag.js) - Google Analytics