1

使用最新版本的 Sqlite,是否可以使用 sqlite UDF 用户定义函数计算最长递增子序列的长度,也称为排序百分比?

2012 年 10 月 15 日根据@Code-Guru 的要求进行编辑。

按照项目大师的示例序列——1、2、3、4、3、5、6、7、8、10——发现数字排序升序子序列是1、2、3、4、5、6 ,7,8,10 使用包含最近单调递增序列成员值的自动变量并按顺序遍历数组。结果,排序后的数字升序子序列的长度为 9。整个序列的长度为 10。因此,排序百分比为 (9/10) * 100% = 90%。谢谢你。

4

1 回答 1

1

Sqlite 没有任何实现最长递增子序列的功能,因此您需要一个用户定义的函数

您可以按函数结果排序。我不相信 UDF 在这方面会受到任何不同的对待。

这是一个示例,说明如何使用函数(用户定义或非用户定义)对查询结果进行排序。

sqlite> create table foo(a);
sqlite> create table foobar(a);
sqlite> create table fubar(a);
sqlite> select name, length(name) as len from sqlite_master;
foo|3
foobar|6
fubar|5
sqlite> select name, length(name) as len from sqlite_master order by len;
foo|3
fubar|5
foobar|6
于 2012-10-12T17:51:46.433 回答