我有两个数组。一个是排序的,另一个不是。
排序的数组非常大,比方说90,000个条目。第二个数组将很短 - 目前不超过401。
问题是我加载了一个文件,并读取该文件以确定要放入短数组的值,当我完成该文件时,短数组必须与已排序的数组合并并序列化为磁盘。我按照你的预期进行合并和排序:
var hashes = [
"M2E0Mzk3YmItOWUzMC00ZmMwLWFhZDQtYTA0NTk0YWIwYjhjXw==mtg0mtq3nze2nw",
"M2ExZjNmNDktODdhOS00ODJiLTg2NzQtM2NiODQ1Njc1ZmYzXw==lte0mzg2otgxmdk",
"M2EzNTExM2UtY2JmYS00ZjAzLTgwZmMtMjg4ZDJkZjA5YzJjXw==mtcxmjqxmdc1mq",
"M2EzZjkzZDQtODUwYS00ZjlkLTg3ZmQtZjliNTFjZmYxNjVhXw==mjgzodu3nji3" ];
var append_to_hashes = [
"M2E2NGZjNWEtMzkwYy00YzE4LTkzM2EtNDVmNjE1MjE2ZDViXw==ltcxmzk1otawng",
"M2ExZjE2NGItNzUwZi00YTU4LWI3OGMtZDVkNDA2YWE2MzRmXw==ltq3odgznja2op",
"M2ExZjE2NGItNzUwZi00YTU4LWI3OGMtZDVkNDA2YWE2MzRmXw==ltq3odgznja2oa"];
if(append_to_hashes.length > 0){
hashes = hashes.concat(append_to_hashes);
hashes = hashes.sort();
}
但我想知道是否有更高性能的方法来连接和排序数组。
答案 0 :(得分:0)
您可以对较小的数组进行排序,然后将每个项目插入适当的位置:
var big = [...]; // Big sorted array
var small = [...]; // Small unsorted array
small.sort();
for(let i = 0; i < big.length && small.length > 0; i++) {
if(big[i].localeCompare(small[0]) > 0) {
big.splice(i, 0, small.shift());
}
}