sorting - 使用 Julia 将项目插入到排序列表中(有和没有重复)

标签 sorting insert julia

主要问题 :将项目插入到已使用 Julia 排序的列表中的最快方法是什么?

目前,我这样做:

v = [1, 2, 3, 5] #example list
x = 4 #value to insert
index = searchsortedfirst(v, x) #find index at which to insert x
insert!(v, index, x) #insert x at index

奖金问题 : 如果我想同时确保没有重复怎么办?

最佳答案

您可以使用 searchsorted获取值出现的索引范围,而不仅仅是第一个,然后使用 splice!用一组新值替换该范围内的值:

insert_and_dedup!(v::Vector, x) = (splice!(v, searchsorted(v,x), [x]); v)

这是一个很好的小单衬,可以做你想做的。
julia> v = [1, 2, 3, 3, 5];

julia> insert_and_dedup!(v, 4)
6-element Array{Int64,1}:
 1
 2
 3
 3
 4
 5

julia> insert_and_dedup!(v, 3)
5-element Array{Int64,1}:
 1
 2
 3
 4
 5

这让我觉得splice!应该处理替换是单个值而不是数组的情况,因此我可以添加该功能。

关于sorting - 使用 Julia 将项目插入到排序列表中(有和没有重复),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25678112/

相关文章:

django - Django 内置中间件的默认列表

java - 使用 Java 8 流对多个变量列表进行排序

r - 在R中,如何按降序对多列数据进行分组,然后为每个组指定从1开始的索引?

arrays - Julia:数组元素的字符串插值

julia - 使用广播 Julia 将向量的向量转换为矩阵

julia - 一个包中有 2 个模块是不是很糟糕?

c# 区分大小写的 ASCII 排序?

php - 这个 MySQL 查询有问题吗?

php - 向数据库php插入大量数据

Java + Mysql UTF8 问题