algorithm - 这个快速排序实现的时间复杂度是 O(n log n) 的最坏情况吗?
问题描述
我想说它最差的时间复杂度仍然是 n log n。仅仅因为我使用中间元素作为枢轴,所以即使数组已经排序,当它从分区方法返回时,它仍然是数组的一半。我可能是错的,我的 DS 不是最好的
public static void quicksort(int [] arr, int low, int high){
if(low < high){
int pivot = partition(arr, low, high);
quicksort(arr, low, pivot);
quicksort(arr, pivot+1, high);
}
}
public static int partition(int [] arr, int low, int high){
int i = low;
int j = high;
int mid = low + (high-low)/2;
int pivot = arr[mid];
while(true){
while(arr[i] < pivot){
i++;
}
while(arr[j] > pivot){
j--;
}
if( i >= j) return j;
swap(arr, i, j);
i++;
j--;
}
}
解决方案
推荐阅读
- ruby-on-rails - Ruby on Rails - 加载活动记录的记录范围与收集方法
- python - 使用 Cloud Composer 和 Celery Executor 在安全网络中的远程工作人员上运行作业
- firebase - Firebase 动态链接社交信息
- html5-video - 取消静音时 HTML 5 视频播放器不工作
- maven - WildFly 14 无法加载 Drools
- excel - VBA模块子保存调试类型匹配13
- javascript - 当状态改变时,React 不会重新渲染组件
- python - 无法导入 ctypes - 架构不匹配?
- javascript - 由于浏览器取消请求,Chrome 扩展无法加载
- firebase - Firebase 客户端对您的实时数据库的访问权限将在 X 天后到期