从大小为n

时间:2017-02-03 20:58:37

标签: java algorithm data-structures

我有一个大小为n的未排序整数数组,我想从中打印出最小的t元素。

例如,如果我有以下数组:

int[] input = {5,6,2,5,7,8,9,1,22,64,3,4} 
int t = 5;

然后我的结果应该是:

result = {1,2,3,4,5}

请求的代码:

Arrays.sort(input);

for(int i = 0; i <= t; i++) {
    System.out.println(input[i]);
}

目前,我是如何使用Arrays.sort()对数组进行排序,然后迭代前几个术语来打印它。这解决了O(nlgn)中的问题。但是,如果我有一个足够大的数组(n> 1000),那么对整个事物进行排序以获得t个元素似乎是不好的做法(假设t远小于n)。

我想知道Java中是否有其他数据结构可以更高效地完成它?也许是线性探测数组并创建一个较小的t数组并用原始数组中最小的t元素填充它的东西,利用一些检查?

我正在研究优先级队列或MinHeap,但我不确定它是否解决了我遇到的问题,即在比O(nlgn)时间更好的情况下解决它。

你们有什么想法吗?

0 个答案:

没有答案
相关问题