Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Algorithm 如何对特定类型的输入进行排序_Algorithm_Sorting - Fatal编程技术网

Algorithm 如何对特定类型的输入进行排序

Algorithm 如何对特定类型的输入进行排序,algorithm,sorting,Algorithm,Sorting,我有一系列的元素,比如a1,a2,…,an。n~4*10^7 输入将主要进行排序。更具体地说,任何小于a_i的元素要么在左侧,要么非常接近右侧~300个元素 如何有效地对该序列进行排序?您可以使用N个元素的堆进行排序,其中N是最大重叠N=300 从一个空的开始 对于序列中的每个元素: 将元素添加到堆中 如果堆有N个以上的元素,则输出并从堆中移除最小的元素 最后输出堆中剩余的元素 这将具有复杂性OnlogN检查自然合并排序。我会说使用大小为N的队列/列表,并始终通过在其正确位置插入每个新元素来保持

我有一系列的元素,比如a1,a2,…,an。n~4*10^7

输入将主要进行排序。更具体地说,任何小于a_i的元素要么在左侧,要么非常接近右侧~300个元素


如何有效地对该序列进行排序?

您可以使用N个元素的堆进行排序,其中N是最大重叠N=300

从一个空的开始

对于序列中的每个元素:

将元素添加到堆中

如果堆有N个以上的元素,则输出并从堆中移除最小的元素

最后输出堆中剩余的元素


这将具有复杂性OnlogN

检查自然合并排序。我会说使用大小为N的队列/列表,并始终通过在其正确位置插入每个新元素来保持其排序。当大小达到N时,开始删除最小的元素。