Code前端首页关于Code前端联系我们

mysql 二分查找 java、php 二分查找

terry 2年前 (2023-09-30) 阅读数 41 #Mysql
文章标签 Mysql

本文内容列表:

  • 1.二分查找的Java代码
  • 2. Java中的二分查找是什么?
  • 3、java中的二分查找方法是什么?

二分查找的Java代码

public class ef {

public static void main(String[] args) {

int[] a = { 4, 8, 12, 44, 69, 71, 98, 132 ,133}; int m = ef.ef(a, 0, a.length, 71);

if(m!=-1){

System.out.println(a[m]+"=== =="+m);

}

System.out.println("该号码不存在");

}

public static int ef(int[] a, int from, int to , int b) {

int midel= (from + to) / 2;

if ((to - from) = 1 b != a[midel]) {

return -1;

}

if (b a[midel]) {

return ef(a, midel, to, b);

} else if (b a[midel]) {

return ef(a, from , midel, b);

} else {

return midel;

}

}

}

java 什么是二分查找?

什么是二分查找?

二分查找又称为二分查找,是一种效率更高的查找方法。但二分查找要求线性表必须采用顺序存储结构,表中的元素必须按关键字排序。

二分查找的优缺点

优点是比较次数少,查找速度快,平均性能好;

缺点是要查找的表必须是有序表,插入和删除比较困难。

因此,二分查找法适用于不经常变化,但查找频繁的有序列表。

使用条款:搜索序列是顺序结构,是有序的。

流程

首先,假设表格中的元素按升序排列,将表格中间记录的关键字与搜索词进行比较。如果两者相等,则查找成功;否则,使用中间位置记录将表拆分为两个子表,第一个和最后一个。如果中间位置注册的关键字大于搜索词,则继续搜索上一个子表,否则继续搜索下一个子表。重复上述过程,直到找到符合条件的记录,则查找成功,或者直至子表不存在,则查找失败。

使用循环实现二分查找

public class BinarySearch {

public static void main(String[] args) {

//生成随机数组 int[] array = suiji();

//对随机数组进行排序 Arrays.sort(array);

System.out.println("生成的随机数组为:" + Arrays.toString(array));

System.out.println ("要搜索的值:");

Scanner input = new Scanner(System.in);

//要搜索的目标值 int goal = input.nextInt();

//使用二分查找 int index = binarySearch(array, aim);

System.out.println("要查找的值的索引位置:" + index);

}

/** * 生成一个随机数组 *

* @return 返回值,返回一个随机数组 */

private static int[] suiji() {

// random.nextInt(n)+m 返回 m 到 m+ n-1 int n = new Random().nextInt(6) + 5;

int[] array = new int[n];

//循环遍历并给数组赋值 for (int i = 0; i array.length ; i++) {

array[i] = new Random().nextInt(100);

}

返回数组;

}

/** * 二分查找 --- 循环实现 *

* @param array 要搜索的数组 * @param goal 要搜索的值 * @return 返回值,成功时返回索引,- 1 时返回错误*/? int mid;

while (left = right) {

mid = (left + right) / 2;

//如果搜索值小于中间值,则整个前半部分搜索范围将作为 New SearchRange if (target array[mid]) {

right = mid - 1;

//如果搜索值大于中间值,则为整个搜索范围的后半部分将作为新的搜索范围 } else if (aim array[mid]) {

left = mid + 1;

//如果搜索数据正好等于中间元素值,则返回中间元素值 } else {

return middle ;

}

}

return -1;

}}

运行结果演示:

F from 知道如果数据查找是否在数组中,然后打印该数据在数组中的索引;如果不存在,则打印-1,即打印-1,则说明该数字在数组中不存在,反之亦然。

4。使用递归实现二分查找

public class BinarySearch2 {

public static void main(String[] args) {

//生成随机数组 int[] array = suiji( );

//对随机数组进行排序 Arrays.sort(array);

System.out.println("生成的随机数组为:" + Arrays.toString(array));

System.out.println("要搜索的值:");

Scanner input = new Scanner(System.in);

//要搜索的目标值 int aim = input.nextInt( );

// 使用二分查找 int index = binarySearch(array, aim, 0, array.length - 1);

System.out.println("要查找的值的索引位置:" + index );

}

/** * 生成随机数组 * * * @return return value 返回随机数组 */

private static int[] suiji() {

// Random. nextInt(n)+ m 返回 m 到 m+n-1 之间的随机数 int n = new Random().nextInt(6) + 5;

int[] array = new int[n];

// 循环遍历 给数组赋值 for (int i = 0; i array.length; i++) {

array[i] = new Random().nextInt(100);

}

return array;

}

/** * 二分查找 ---递归方法 * * * @param array 要查找的数组 * @param goal 要查找的值 * @param left 上的最小值left * @param right 右边的最大值 * @return 返回值,成功则返回索引,失败则返回-1 */

private static int binarysearch(int[] array, int aim, int left, int right ) {

if (aim array [left] || Target group [right]) {

return -1;

}

//求中间值 int mid = (left + right)/ 2;

if(array[mid]==aim){

return mid;

} else if(array[mid]aim){

//如果中间值大于你要找的值,从左半部继续递归 return binarySearch(array, aim, left, mid - 1);

} else {

//如果中间值小于要找的值,则从继续递归右半部分 return binarySearch(array, target, middle + 1, matrix.length-1);

}

}}

运行结果演示:

总结:

与循环相比,递归代码更简单,但占用时间和空间较多,效率较低。低的。在实际学习和工作中,根据情况选择使用。通常我们如果用循环来实现代码的话,只要不是太麻烦,我们就选择循环来实现~

java中的二分查找方法是什么

1。算法概念。

二分查找算法也称为半查找、二分查找。它是一种用于在有序数组中查找特定元素的搜索算法。请注意,该算法基于有序数组。

2。算法思维。

①搜索过程从矩阵的中间元素开始。如果中间元素正好是要查找的元素,则查找过程结束;

②如果特定元素大于或小于中间元素,则当数组大于或小于中间元素时,查找过程结束,查找小于中间元素的一半,和之前一样从中间元素开始比较。

③如果在特定步骤矩阵为空,则表示找不到。

此搜索算法每次比较都会将搜索区域减少一半。

3。实施思路。

①找到数组中间的值,存入一个变量中(为了下面的解释,该变量暂称为temp);

② 需要找到的key是与temp比较;

③ 如果 key 的值大于 temp,则以数组的中间位置作为下一步计算的起点;重复①②。

④如果key值小于temp,则以数组的中间位置作为下次计算的终点;重复①②③。

⑤如果键值等于temp,则返回数组下标,查找完成。

4。部署代码。

/**

* 描述:二分查找。

* @param array 要搜索的有序数组

* @param 从起始下标开始

* @param 结束下标

* @param key 需要搜索的关键字

* @return

*/

public static 0 if ( from 0 || to 0 ) {

throw new Illegal ArgumentException ( "Params from Length必须大于 0。"); (从 1) + (到 1); // 向右更改并用 2

e temp = 矩阵 [mid] return center;

二分查找 (matrix, from, to, key);

}}

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门