java - 在java中使用Set/TreeSet的平均时间复杂度是多少?

标签 java

下面使用 Java 中的 Set 接口(interface)/TreeSet 类实现是否满足 Big-O 表示法中的 O(N*log(N)) 平均时间复杂度。

我试图在提供的整数列表中找到具有上述平均时间复杂度的第 k 个最大元素。

   public class JavaBuiltInSort {

       public static void removeDupInIntArray(int[] ints, int k) {
           Set<Integer> setString = new TreeSet<Integer>(Collections.reverseOrder());
           for (int i = 0; i < ints.length; i++) {
               setString.add(ints[i]);
           }
           System.out.println(setString);
           Integer[] array = setString.toArray(new Integer[0]);
           System.out.println("The kth largest element in the list is "+ array[k-1]);
       }

       public static void main(String[] args) {
           int[] arr = { 8, 9, 4, 5, 2, 1, 6, 5, 7, 9, 5, 4, 8, 6, 3, 1, 2, 5, 4, 7, 8 };
           int k = 5;
           JavaBuiltInSort.removeDupInIntArray(arr,k);
       }
   }

最佳答案

来自TreeSet :

This implementation provides guaranteed log(n) time cost for the basic operations (add, remove and contains).

您正在执行 ~log(n) 操作 n 次,因此复杂度确实是 O(n log(n))。

关于java - 在java中使用Set/TreeSet的平均时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20938421/

相关文章:

java - org.hibernate.MappingNotFoundException : resource: hibernate. cfg.xml 未找到

java - 简单的服务器/客户端套接字连接?

java - 为什么我不适用于 javafx 上的参数?

java - 如何删除 JBoss 工具项目属性中的 JPA 连接?

java - 在类内部使用 static "object"的空指针异常

java - 如何查找实体类中没有属性

java - 如何一键从 Eclipse 运行多个 Maven 目标

java - Eclipse 中的空源选项卡

java - 错误: Undefined function or variable - java in MATLAB

java - PDFBox 2.0.8 签署文档时出现问题