TopK问题 Java代码
来源:互联网 发布:分销商城 php源码 编辑:程序博客网 时间:2024/05/13 01:47
import java.util.Arrays;public class TopK{public static void main(String[] args){int [] data = {5,1,2,3,4,0,6,7,8,9};int k = 1;FindTopK(data, 0, data.length-1, k-1);System.out.println(Arrays.toString(data));System.out.println(data[k-1]);}public static void swap(int[] num, int i, int j ){int temp = num[i];num[i] = num[j];num[j] = temp;}public static int pertition(int[] num, int low, int high){int flag = num[low];int i = low;int j = high+1;while(i<j){while(++i<=high && num[i]>=flag);while(--j>=low && num[j]<=flag);if(i>=j)break;swap(num, i, j);}swap(num, low, i-1);return i-1;}public static void FindTopK(int[] num, int start, int end, int k){if(start>=end) return;int flag = pertition(num, start, end);if(flag == k){return;}else if(flag > k){FindTopK(num, start, flag-1,k);}else{FindTopK(num, flag+1, end, k+start-flag-1);}}}
import java.util.Arrays;public class TopKWithMinHeap {public static void main(String[] args) {int k = 3;int[] num = {0,9,8,7,6,1,2,3,4,5};BuildMinHeap(num, k-1);for(int loop = k; loop<num.length; loop++){if(num[loop] > num[0]){swap(num, 0, loop);}BuildMinHeap(num, k-1);}System.out.println(Arrays.toString(num));System.out.println(num[0]);}public static void swap(int[] num, int i, int j){int temp = num[i];num[i] = num[j];num[j] = temp;}public static void BuildMinHeap(int[] num, int index){int loop = (index - 1)/2;for(;loop>=0; loop--){int innerIndex = loop;while((innerIndex*2+1)<=index){int smallerIndex = innerIndex*2+1;if((innerIndex*2+1)< index){if(num[innerIndex*2+1]<num[innerIndex*2+2]){smallerIndex++;}}if(num[innerIndex]>num[smallerIndex]){swap(num, innerIndex, smallerIndex);innerIndex = smallerIndex;}else{break;}}}}}
0 0
- TopK问题 Java代码
- topk问题java实现
- java解决topk问题
- topk代码
- topK问题
- topK问题
- topk 问题
- TopK问题
- topK问题
- TopK问题
- TopK问题
- Java最小堆解决TopK问题
- TopK问题探索-最小堆JAVA实现
- Java优先级队列处理topK问题
- Java最小堆解决TopK问题
- Java最小堆解决TopK问题
- Java最小堆解决TopK问题
- 3-1、topk代码
- tablib(tld)
- python的strip()函数使用
- Web.config配置文件详解(新手必看)
- CODEFORCES 384A Coder
- RT-thread内核之事件
- TopK问题 Java代码
- html基础
- andorid Paint.Style
- RT-thread内核之邮箱
- Live555学习笔记(二)—— RTSP服务运作分析
- 零基础学习PHP,学习笔记。
- Java实现定时任务的三种方法
- STM32的USART发送数据时如何使用TXE和TC标志
- Android进阶(二十八)上下文菜单ContextMenu使用案例