如何标识已排序的列表 [英] How to identify a sorted list

查看:0
本文介绍了如何标识已排序的列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道列表"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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆