我需要一种算法,给定一个数组和一个整数k,该算法返回一个由k个“部分”数字组成的数组,并且:
“部分”是有序的。表示如果数字在“部分” j中,则对于i> j,它小于“部分” i中的每个数字。
“部分”中的元素不一定要排序。
仅供参考,这不是k分类的问题!我找不到任何东西。每次搜索仅返回k个排序的算法和讨论。
答案 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));
}
但是我想您正在寻找一种解决方案,而不是先对数组进行排序然后再进行分块。