用Java写一个对半插入函数
时间: 2024-04-10 20:28:02 浏览: 13
当然可以!下面是一个使用Java编写的对半插入函数的示例代码:
```java
public class BinaryInsertion {
public static void binaryInsertionSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int key = arr[i];
int left = 0;
int right = i - 1;
// 使用二分查找法找到插入位置
while (left <= right) {
int mid = (left + right) / 2;
if (key < arr[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
// 将后面的元素依次往后移动
for (int j = i - 1; j >= left; j--) {
arr[j + 1] = arr[j];
}
// 插入元素到正确位置
arr[left] = key;
}
}
public static void main(String[] args) {
int[] arr = {5, 2, 8, 3, 1};
binaryInsertionSort(arr);
System.out.print("排序结果:");
for (int num : arr) {
System.out.print(num + " ");
}
}
}
```
这个示例代码实现了一个对半插入排序算法。它使用二分查找法来找到插入位置,然后将后面的元素依次往后移动,最后将待排序元素插入到正确的位置。在 `main` 方法中,我们定义了一个整数数组 `arr`,并调用 `binaryInsertionSort` 方法进行排序。最后,我们打印排序结果。执行代码后,输出的结果为:1 2 3 5 8,即为按升序排列的数组。