Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在带有装运ID、UPC代码和数量的文本文件中查找最大数量的10行_C++_Algorithm_Sorting_Heap - Fatal编程技术网

C++ 在带有装运ID、UPC代码和数量的文本文件中查找最大数量的10行

C++ 在带有装运ID、UPC代码和数量的文本文件中查找最大数量的10行,c++,algorithm,sorting,heap,C++,Algorithm,Sorting,Heap,这是一个面试问题 给定一个文本文件,每行包括:装运ID、UPC代码、数量 找出最大数量的10行 我的解决方案: 由c++ 制作一个最小堆(大小为10),数量作为比较对象 将每个条目作为一个结构读取,字段为{装运ID,UPC代码,数量} 将其与10元素最小堆的顶部元素进行比较 如果>用它替换顶部元素,否则读取下一个元素 它是O(n lgn) 空间O(1) 更好的解决方案 谢谢旁注:您的时间成本实际上是O(n),因为每个元素的插入时间是一个常数(O(log10)) 基本思想是合理的——就成本而言,您

这是一个面试问题

给定一个文本文件,每行包括:装运ID、UPC代码、数量

找出最大数量的10行

我的解决方案:

由c++

制作一个最小堆(大小为10),数量作为比较对象

将每个条目作为一个结构读取,字段为{装运ID,UPC代码,数量}

将其与10元素最小堆的顶部元素进行比较

如果>用它替换顶部元素,否则读取下一个元素

它是O(n lgn)

空间O(1)

更好的解决方案


谢谢旁注:您的时间成本实际上是O(n),因为每个元素的插入时间是一个常数(O(log10))


基本思想是合理的——就成本而言,您不会比O(n)做得更好——但与其滚动自己的堆,不如使用
std::priority\u queue

旁注:您的时间成本实际上是O(n),因为每个元素的插入时间是一个常量(O(log10))


基本的想法是合理的——就成本而言,你不会比O(n)做得更好——但与其自己滚堆,不如使用
std::priority\u queue

@user1002288:我已经修改了我的答案。@user100228 O(n)是线性的。@jli:这是一个问题还是一个陈述?无论如何,OP可能在看到我修改后的答案之前写下了评论。根据编辑日志(),您的原始答案中确实包含了O(n)语句。@jli:编辑日志不会显示在原始帖子发布后五分钟内所做的更改。@user1002288:我已修改了我的答案。@user1002288 O(n)是线性的吗?@jli:这是问题还是陈述?无论如何,OP可能是在看到我修改后的答案之前写下了评论。根据编辑日志(),您的原始答案中确实包含了O(n)语句。@jli:编辑日志不会显示在原始帖子发布后五分钟内所做的更改。