创建一个14个长的数组,插入一个固定值,然后再插入13个随机数,要求查找固定值的位置 方法要求:java生成随机数组ThreadLocalRandom然后用快速排序法排序再用折半查找法
时间: 2024-03-26 21:39:45 浏览: 87
JAVA语言实现随机数的输入以及数组的排序
5星 · 资源好评率100%
好的,下面是一个使用快速排序法的Java程序,可以满足你的要求:
```java
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) {
// 创建一个14个长的数组
int[] arr = new int[14];
// 插入一个固定值
int fixedValue = 10;
arr[0] = fixedValue;
// 插入13个随机数
ThreadLocalRandom random = ThreadLocalRandom.current();
for (int i = 1; i < arr.length; i++) {
arr[i] = random.nextInt();
}
// 快速排序
quickSort(arr, 0, arr.length - 1);
// 折半查找
int index = binarySearch(arr, fixedValue);
System.out.println("固定值 " + fixedValue + " 的位置是 " + index);
}
// 快速排序
private static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int pivotIndex = partition(arr, left, right);
quickSort(arr, left, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, right);
}
}
private static int partition(int[] arr, int left, int right) {
int pivot = arr[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (arr[j] < pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[right];
arr[right] = temp;
return i + 1;
}
// 折半查找
private static int binarySearch(int[] arr, int key) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
}
```
这个程序中,我们首先创建一个14个长的数组,并插入一个固定值。然后,我们使用ThreadLocalRandom生成13个随机数,并将它们插入到数组中。
接下来,我们使用快速排序法对数组进行排序。最后,我们使用折半查找法查找固定值的位置,并输出结果。
请注意,快速排序法和冒泡排序法的时间复杂度分别为O(nlogn)和O(n^2),因此快速排序法的效率更高。
阅读全文