如何按实部对复数排序,然后按虚部排序

时间:2018-08-16 12:00:18

标签: julia

我想按实数部分然后按虚数部分对复数列表(或用julia讲一维数组)进行排序。我尝试对lt使用匿名函数,但是它不起作用。

julia> b=[3 + 1im,1 + 2im,1 + 1im,5 + 6im]
4-element Array{Complex{Int64},1}:
 3 + 1im
 1 + 2im
 1 + 1im
 5 + 6im

julia> sort(b,lt = x,y -> if(real(x)==real(y)) imag(x)<imag(y) else real(x)<real(y) end)
ERROR: UndefVarError: x not defined
Stacktrace:
 [1] top-level scope at none:0

我想要以下结果

 1 + 1im
 1 + 2im
 3 + 1im
 5 + 6im

2 个答案:

答案 0 :(得分:6)

太近了!

julia> sort(b, lt = (x,y) -> real(x)==real(y) ? imag(x)<imag(y) : real(x)<real(y))
4-element Array{Complex{Int64},1}:
 1+1im
 1+2im
 3+1im
 5+6im

答案 1 :(得分:0)

按字典顺序对单词进行排序(第一个元素;然后第二个元素,依此类推)。 您可以这样做:

if (global.document)
  document.createRange = () => ({
    setStart: () => {},
    setEnd: () => {},
    commonAncestorContainer: {
      nodeName: "BODY",
      ownerDocument: document,
    },
  })

编辑:上面的注释使用b = [3 + 1im, 1 + 2im, 1 + 1im, 5 + 6im] sort(b, lt = (x, y) -> (real(x), imag(x)) < (real(y), imag(y))) 更加简洁。