`
android2116
  • 浏览: 14498 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAVA中使用折半查找在有序数组中插入一个元素代码

 
阅读更多
/*
	在一个有序的数组中插入一个元素
*/

class ArrayInsert
{
	public static void main(String[] args) 
	{

		int[] arr = new int[]{1,6,9,11,18,54,60,66,90};
		System.out.println("insert 19 to array:");
		printArr(arr);
		int[] newArr = insert( arr, 19 );
		printArr( newArr );

	}//end of method main

	//打印一个数组
	public static void printArr(int[] arr)
	{
		for (int x = 0; x<arr.length; x++ )
		{
			if (x == arr.length - 1)
			{
				System.out.println(arr[x]);
				break;
			}
			System.out.print(arr[x] + "\t");
		}
	}//end of method printArr

	//在数组中插入一个元素
	public static int[] insert( int[] arr, int insertKey )
	{
	
	int loc, mid;
	int[] newArr = new int[arr.length + 1];

	mid = locFind( arr, insertKey );

	//插入新元素操作,分三种情况,在首部,在尾部,在中间
	if (insertKey < arr[0])//在首部
	{
		newArr[0] = insertKey;
		for ( int x = 1; x <= arr.length; x++ )
		{
			newArr[x] = arr[x - 1];
		}
	}
	else if (insertKey > arr[arr.length - 1])//在尾部
	{
		int x;
		for (x = 0 ; x < arr.length ; x++ )
		{
			newArr[x] = arr[x];
		}
		newArr[x] = insertKey;
	}
	else//在中间
	{
		for ( loc = 0; loc <= mid; loc++ )//插入位之前的元素赋值给新数组
		{
			newArr[loc] = arr[loc];
		}

		newArr[loc] = insertKey;
		
		for ( loc++; loc < newArr.length; loc++ )//插入位之后的元素赋值给新数组
		{
			newArr[loc] = arr[loc - 1];
		}

	}

	return newArr;

	}//end of method insert


	//用折半查找法找到元素应该插入数组的位置并返回
	public static int locFind( int[] arr, int insertKey )
	{

	int min, mid, max;

	min = 0;
	max = arr.length;
	mid = ( max + min ) / 2;

	while ( min < max )
	{
		if ( insertKey > arr[mid] )
		{
			min = mid + 1;
		}
		else if ( insertKey < arr[mid] )
		{
			max = mid - 1;
		}

		mid = ( max + min ) / 2;
	}//end of while

	return mid;

	}//end of method locFind
}//end of class ArrayInsert

 

0
0
分享到:
评论

相关推荐

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

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

    java排序 折半法

    在普通插入排序中,当确定元素的正确位置时,需要从前向后依次比较,而折半插入排序则通过二分查找(折半查找)的方式确定插入位置,减少了比较次数,提高了效率。 #### 代码解析 ```java public class Sort3 { ...

    JDBC连数据库的JAVA程序,以及冒泡排序,折半查找.rar

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

    java数组与简单排序

    有序数组的一个常见应用是二分法查找,这是一种在有序数组中查找特定元素的有效方法。 线性查找,也称为顺序查找,是最简单的查找算法。在给定的数组中,它从头到尾遍历每个元素,直到找到目标元素或者搜索完整个...

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

    二分查找算法,又称折半查找,是一种在有序数组中查找特定元素的高效搜索算法。在计算机科学中,尤其在Java编程中,掌握这种算法对于优化数据处理性能至关重要。本章将深入探讨二分查找的基本原理、实现方式以及其在...

    ErFenChaZhao.rar_数组查找

    二分查找,又称为折半查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是每次比较中间元素与目标值,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在数组的左半部分继续查找;反之...

    java各种数组排序(插入,交换,选择,归类,基数排序).pdf

    在直接插入排序中,每次将一个待排序的元素插入到已经排序好的序列中的适当位置。折半插入排序则是通过二分查找来确定插入位置,提高了效率。希尔排序则是通过设置间隔序列,减少元素移动次数,从而提高整体效率。 ...

    java各种数组排序(插入,交换,选择,归类,基数排序).docx

    - **交换元素**:定义了一个辅助方法 `swap` 用于交换数组中两个指定位置的元素。 - **冒泡排序**:实现了从小到大和从大到小两种排序方式。 - **直接选择排序**:同样支持两种排序方式。 #### 总结 排序算法是...

    java各种数组排序插入交换选择归类基数排序.pdf

    堆排序则利用了堆数据结构的特性,将待排序序列构造成一个大顶堆或小顶堆,然后进行调整以达到排序目的。 4. 归并排序: 归并排序是一种分治策略,将数组分成两个子数组,分别排序后再合并,保证了排序的稳定性。...

    java-二分查找.rar

    二分查找,也称为折半查找,是一种在有序数组中搜索特定元素的高效算法。它利用了数组的线性特性,每次将待搜索区域减半,直到找到目标元素或者确定不存在为止。在Java中实现二分查找,我们需要理解其基本原理和步骤...

    Java实现遍历、排序、查找算法及简要说明

    查找算法虽然在本题目中没有详细说明,但通常指的是在一个数据集合中寻找特定元素的过程,如线性查找、二分查找等。线性查找是最简单的方式,从头到尾遍历数组;而二分查找则适用于有序数组,通过不断缩小搜索范围...

    java 冒泡算法和插入法排序,二分法查找

    这是一种在有序数组或列表中查找特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是目标值,则搜索过程结束;如果目标值大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且...

    java二分查找

    因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,...

    java 二分查找法的实现方法

    在Java中,二分查找法通常用于数组或有序列表中,其核心思想是通过不断缩小搜索范围来快速定位目标元素。以下是关于Java实现二分查找法的详细解释: 1. **算法原理**: 二分查找法首先将数组或列表分为左、中、右...

    java实现数据结构内部排序.pdf

    在Java代码中,`BInsertSort`方法首先将待插入元素存储在数组的第一个位置,然后通过二分查找找到有序子表的中间位置,将元素插入到正确位置。 3. **希尔排序(ShellInsert & ShellSort)**: 希尔排序是插入排序...

    二分查找之网易笔试题

    二分查找,也称为折半查找,是一种在有序数组中搜索特定元素的高效算法。它利用了数组的线性特性,每次将搜索范围减半,从而显著减少了查找次数。在这个网易笔试题中,我们将深入探讨两种不同的二分查找实现:基础...

    java中数组的应用及方法

    二分查找是一种在有序数组中查找特定元素的高效算法。`BinarySearch`类中的`binarySearch_1`和`binarySearch_2`方法演示了这个概念。首先,我们定义一个范围,`min`和`max`分别表示数组的起始和结束索引,`mid`是...

Global site tag (gtag.js) - Google Analytics