如何标识已排序的列表 [英] How to identify a sorted list
本文介绍了如何标识已排序的列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道列表"A"是否已经按其值进行了排序(严格按升序)。我想复制一份列表(=>"B"),并将其与按值排序的"A"进行比较(使用ASC
)。在目前的状态下,我不知道如何创建列表的副本。也许有另一种更简单的方法来解决此问题(使用Cypher)。
推荐答案
如果您不想/不能使用apoc,可以使用
对列表进行排序 UNWIND list as item
WITH list,item ORDER BY item
它有点笨拙,因为您需要结转所有WITH
语句中需要的所有变量。
示例:
WITH [1,2,3,4] as list
UNWIND list as item
WITH list,item ORDER BY item
WITH list,collect(item) as sorted
return list,sorted,list=sorted
退货
╒═════════╤═════════╤═════════════╕
│"list" │"sorted" │"list=sorted"│
╞═════════╪═════════╪═════════════╡
│[1,2,3,4]│[1,2,3,4]│true │
└─────────┴─────────┴─────────────┘
但是
WITH [1,2,3,1] as list
UNWIND list as item
WITH list,item ORDER BY item
WITH list,collect(item) as sorted
return list,sorted,list=sorted
退货
╒═════════╤═════════╤═════════════╕
│"list" │"sorted" │"list=sorted"│
╞═════════╪═════════╪═════════════╡
│[1,2,3,1]│[1,1,2,3]│false │
└─────────┴─────────┴─────────────┘
或者您可以使用reduce
函数,这样可以避免对列表进行排序,并且只对列表迭代一次:
WITH [1,2,3,4] as list
WITH reduce(result = true, i in range(0,size(list)-2) | result AND list[i] <= list[i+1]) AS sorted
return sorted
这篇关于如何标识已排序的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文