java - 通过修改也具有平均 O(n) 时间复杂度的快速排序来查找数组的介质
问题描述
请帮我。我需要修改平均时间复杂度为 O(n) 的快速排序,它只对数组的一半进行排序,因为我只是想找到数组的介质。
在进行任何更改之前,这是我的快速排序算法:
static void swap(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
static int partition(int[] arr, int low, int high){
int pivot = arr[high];
int i = (low - 1);
for(int j = low; j <= high - 1; j++){
if (arr[j] < pivot) {
i++;
swap(arr, i, j);
}
}
swap(arr, i + 1, high);
return (i + 1);
}
static void quickSort(int[] arr, int low, int high){
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
解决方案
推荐阅读
- parsing - 用于编辑 lvm.conf 文件的工具
- javascript - 如何将 js 脚本与 html 代码隔离?
- swift - 为什么 ReturnType 在这个 Swift 函数中不起作用?
- svg - 影根?调出描边颜色
- google-sheets - 如何从 LOOKUP 中获取 NETWORKDAYS 的假期范围?
- python - Keras 使用权重提取文本中的信息特征
- azure-cosmosdb - 在哪里可以找到通过 MongoDb API 搜索 Cosmos DB 的 Azure 文档?
- angularjs - angularjs中的插值
- node.js - Azure Webapp(使用 Nodejs)记录到 Blob 存储
- google-bigquery - 流插入数据后立即从 BigQuery 获取计算结果?