java写一个二分查找
时间: 2023-06-02 21:06:03 浏览: 81
好的,我们来看一下二分查找的Java代码:
```
public int binarySearch(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
以上是一个基本的二分查找函数,它的参数是一个有序数组和目标值,它返回目标值在数组中的下标,如果目标值不存在,则返回-1。这个函数首先从数组的中间开始查找,如果中间的值正好等于目标值,就直接返回;如果中间的值小于目标值,就在右半部分继续查找;如果中间的值大于目标值,就在左半部分继续查找,直到找到目标值或者搜索范围为空。
相关问题
Java写一个二分查找
二分查找是一种常见的查找算法,可以在有序数组中快速查找指定元素。以下是 Java 实现二分查找的代码:
```java
public static int binarySearch(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
这个方法接收一个有序数组和一个目标值作为参数,返回目标值在数组中的索引,如果目标值不存在则返回 -1。
用java写一个二分查找树
好的,以下是用 Java 写一个二分查找树的基本代码:
```java
class Node {
int key;
Node left, right;
public Node(int data) {
key = data;
left = right = null;
}
}
class BinarySearchTree {
Node root;
public BinarySearchTree() {
root = null;
}
void insert(int key) {
root = insertNode(root, key);
}
Node insertNode(Node root, int key) {
if (root == null) {
root = new Node(key);
return root;
}
if (key < root.key) {
root.left = insertNode(root.left, key);
} else if (key > root.key) {
root.right = insertNode(root.right, key);
}
return root;
}
void inorder() {
inorderTraversal(root);
}
void inorderTraversal(Node root) {
if (root != null) {
inorderTraversal(root.left);
System.out.print(root.key + " ");
inorderTraversal(root.right);
}
}
public static void main(String[] args) {
BinarySearchTree bst = new BinarySearchTree();
bst.insert(50);
bst.insert(30);
bst.insert(20);
bst.insert(40);
bst.insert(70);
bst.insert(60);
bst.insert(80);
System.out.println("Inorder traversal of the binary search tree: ");
bst.inorder();
}
}
```
这里我们定义了一个节点(Node)类和一个二分查找树(BinarySearchTree)类。节点类存储了键值以及左右子节点;而二分查找树类则包含了对节点的插入(insert)和中序遍历(inorder)方法。
我们在 main() 方法中创建了一颗二分查找树,插入了一些数据,并且打印了中序遍历结果。
希望这份代码可以帮到您。