对未排序元素的k个排序部分进行排序的数组

时间:2018-07-28 16:29:57

标签: arrays sorting ksort

我需要一种算法,给定一个数组和一个整数k,该算法返回一个由k个“部分”数字组成的数组,并且:

  • “部分”是有序的。表示如果数字在“部分” j中,则对于i> j,它小于“部分” i中的每个数字。

  • “部分”中的元素不一定要排序。

仅供参考,这不是k分类的问题!我找不到任何东西。每次搜索仅返回k个排序的算法和讨论。

1 个答案:

答案 0 :(得分:0)

一个答案是简单地对数组进行排序,然后将其拆分为大块,例如在伪代码中:

sorted_arr = sorted(arr)
new_arr = []
arr_len = size(arr)
chunk_len = max(1, floor(arr_len / k))
for (i = 0; i < arr_len; i += chunk_size) {
    new_arr.push(sorted_arr.slice(i, i + chunk_len));
}

但是我想您正在寻找一种解决方案,而不是先对数组进行排序然后再进行分块。