arrays - 将数组排序为未排序元素的 k 个已排序部分
问题描述
我需要一个算法,给定一个数组和一个 int k,返回一个由 k 个“部分”数字组成的数组,并且:
“零件”是有序的。这意味着如果一个数字在“部分”j 中,它小于“部分”i 中的每个数字,因为 i > j。
“部分”中的元素不一定是有序的。
仅供参考,这不是 k 排序问题!我找不到任何关于它的信息。每次搜索只返回 k 排序算法和讨论。
解决方案
一种答案是简单地对数组进行排序,然后将其拆分为块,例如在伪代码中:
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));
}
但我猜你正在寻找一个比实际上先对数组进行排序然后分块更快的解决方案。
推荐阅读
- laravel - Laravel 未定义偏移量:0 获取资源
- elasticsearch - 获取 Grok Debugger Kibana 的登录字段
- ios - 从另一个文件中的 SKScene 中删除 UIView
- internet-explorer - Microsoft Edge 在 IE 中打开 login.onmicrosoft.com 而不是访问页面
- elmah - 可以在 VSTS 版本中转换 ELMAH 主题吗?
- java - Vector not changing with "AES/CBC/pkcs7padding" in Java
- oracle - 为其他用户创建 FK 时 Oracle 表或视图不存在
- r - 如何在 ggplotly() 中使分组热图的列宽相同
- ios - 使用 AWS Comprehend iOS 的问题
- sql - 是否可以从单个字符创建一个字符串?