/* 在一个有序的数组中插入一个元素 */ 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
相关推荐
二分查找算法,也称为折半查找算法,是一种在有序数组中查找特定元素的高效搜索方法。该算法的基本思想是通过比较数组中间元素与目标值的大小,将搜索范围缩小到一半,这样每次比较都可以将待查找区间减半,从而达到...
在普通插入排序中,当确定元素的正确位置时,需要从前向后依次比较,而折半插入排序则通过二分查找(折半查找)的方式确定插入位置,减少了比较次数,提高了效率。 #### 代码解析 ```java public class Sort3 { ...
折半查找,又称二分查找,是一种在有序数组中查找特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是目标值,则搜索过程结束;如果目标值大于或小于中间元素,则在数组大于或小于中间元素的那...
有序数组的一个常见应用是二分法查找,这是一种在有序数组中查找特定元素的有效方法。 线性查找,也称为顺序查找,是最简单的查找算法。在给定的数组中,它从头到尾遍历每个元素,直到找到目标元素或者搜索完整个...
二分查找算法,又称折半查找,是一种在有序数组中查找特定元素的高效搜索算法。在计算机科学中,尤其在Java编程中,掌握这种算法对于优化数据处理性能至关重要。本章将深入探讨二分查找的基本原理、实现方式以及其在...
二分查找,又称为折半查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是每次比较中间元素与目标值,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在数组的左半部分继续查找;反之...
在直接插入排序中,每次将一个待排序的元素插入到已经排序好的序列中的适当位置。折半插入排序则是通过二分查找来确定插入位置,提高了效率。希尔排序则是通过设置间隔序列,减少元素移动次数,从而提高整体效率。 ...
- **交换元素**:定义了一个辅助方法 `swap` 用于交换数组中两个指定位置的元素。 - **冒泡排序**:实现了从小到大和从大到小两种排序方式。 - **直接选择排序**:同样支持两种排序方式。 #### 总结 排序算法是...
堆排序则利用了堆数据结构的特性,将待排序序列构造成一个大顶堆或小顶堆,然后进行调整以达到排序目的。 4. 归并排序: 归并排序是一种分治策略,将数组分成两个子数组,分别排序后再合并,保证了排序的稳定性。...
二分查找,也称为折半查找,是一种在有序数组中搜索特定元素的高效算法。它利用了数组的线性特性,每次将待搜索区域减半,直到找到目标元素或者确定不存在为止。在Java中实现二分查找,我们需要理解其基本原理和步骤...
查找算法虽然在本题目中没有详细说明,但通常指的是在一个数据集合中寻找特定元素的过程,如线性查找、二分查找等。线性查找是最简单的方式,从头到尾遍历数组;而二分查找则适用于有序数组,通过不断缩小搜索范围...
这是一种在有序数组或列表中查找特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是目标值,则搜索过程结束;如果目标值大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且...
因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,...
在Java中,二分查找法通常用于数组或有序列表中,其核心思想是通过不断缩小搜索范围来快速定位目标元素。以下是关于Java实现二分查找法的详细解释: 1. **算法原理**: 二分查找法首先将数组或列表分为左、中、右...
在Java代码中,`BInsertSort`方法首先将待插入元素存储在数组的第一个位置,然后通过二分查找找到有序子表的中间位置,将元素插入到正确位置。 3. **希尔排序(ShellInsert & ShellSort)**: 希尔排序是插入排序...
二分查找,也称为折半查找,是一种在有序数组中搜索特定元素的高效算法。它利用了数组的线性特性,每次将搜索范围减半,从而显著减少了查找次数。在这个网易笔试题中,我们将深入探讨两种不同的二分查找实现:基础...
二分查找是一种在有序数组中查找特定元素的高效算法。`BinarySearch`类中的`binarySearch_1`和`binarySearch_2`方法演示了这个概念。首先,我们定义一个范围,`min`和`max`分别表示数组的起始和结束索引,`mid`是...