我面临一个应用程序,我必须设计一个随机访问(或至少优于O(n))具有廉价(O(1))插入和删除的容器,并根据顺序存储数据(排名)插入时指定.
例如,如果我有以下数组:
[2, 9, 10, 3, 4, 6]
Run Code Online (Sandbox Code Playgroud)
我可以调用索引2上的remove来删除10,我也可以通过插入13来调用索引1上的insert.
在我完成这两项操作之后:
[2, 13, 9, 3, 4, 6]
Run Code Online (Sandbox Code Playgroud)
数字存储在一个序列中,插入/删除操作需要一个索引参数来指定应插入数字的位置或应删除的数字.
我的问题是,除了链接列表和向量之外,什么样的数据结构可以维护这样的东西?我倾向于优先考虑下一个可用索引的Heap.但我一直在看一些关于融合树有用的东西(但在理论意义上更多).
什么样的数据结构可以在保持内存消耗的同时为我提供最佳的运行时间?我一直在玩一个保留哈希表的插入顺序,但到目前为止它还没有成功.
我直接使用std :: vector折腾的原因是因为我必须根据这些基本操作构造一些预先形成向量的东西.容器的大小有可能增长到数十万个元素,因此承诺在std :: vector中进行转换是不可能的.带有链接列表的相同问题行(即使是双重链接),将其遍历给定索引将采用最坏情况O(n/2),其舍入为O(n).
我想到了一个包含Head,Tail和Middle指针的双倍链表,但我觉得它不会好多了.
目前我正在编写一个 Python 脚本,用于聚合来自多个 Excel 工作表的数据。我选择使用的模块是 Pandas,因为它的速度和 Excel 文件的易用性。该问题仅与 Pandas 的使用有关,我试图创建一个额外的列,该列包含组内唯一的、仅限整数的有序 等级。
我的 Python 和 Pandas 知识有限,因为我只是一个初学者。
目标
我正在尝试实现以下数据结构。排名前 10 的 AdWords 广告根据其在 Google 中的位置进行垂直排名。为了做到这一点,我需要在原始数据中创建一列(参见表 2 和 3),其中包含不包含重复值的仅整数排名。
表 1:我试图实现的数据结构
device , weeks , rank_1 , rank_2 , rank_3 , rank_4 , rank_5
mobile , wk 1 , string , string , string , string , string
mobile , wk 2 , string , string , string , string , string
computer, wk 1 , string , string , string …
Run Code Online (Sandbox Code Playgroud) 我正在构建相当复杂的查询,我尝试加载用户的聚合点及其排名。我发现 RANK() 函数可以帮助我实现这一目标,但无法让它工作。
以下是在没有 RANK 的情况下运行的查询:
SELECT users.*, SUM(received_points.count) AS pts
FROM users
LEFT JOIN received_points ON received_points.user_id = users.id AND ...other joining conditions...
GROUP BY users.id
ORDER BY pts DESC NULLS LAST
Run Code Online (Sandbox Code Playgroud)
现在我还想选择排名 - 但这种使用 RANK 函数的方式不起作用:
SELECT users.*, SUM(received_points.count) AS pts,
RANK() OVER (ORDER BY pts DESC NULLS LAST) AS position
FROM users
LEFT JOIN received_points ON received_points.user_id = users.id AND ...other joining conditions...
GROUP BY users.id
ORDER BY pts DESC NULLS LAST
Run Code Online (Sandbox Code Playgroud)
它说:PG::UndefinedColumn: ERROR: column "pts" …
使用时需要一些指示 rank()
我从数据集中提取了一列..需要进行排名。
Dataset<Row> inputCol= inputDataset.apply("Colname");
Dataset<Row> DSColAwithIndex=inputDSAAcolonly.withColumn("df1Rank", rank());
DSColAwithIndex.show();
Run Code Online (Sandbox Code Playgroud)
我可以对列进行排序,然后也可以附加一个索引列以获得排名......但对已知的语法和用法感到好奇 rank()
我制作了一个 python 脚本来使用 graphviz 绘制目录结构。为了正确渲染图表,我使用rankdir=LR。然而,具有相同等级的节点居中。
请参见下图。
如您所见,“.gitignore”、“.travis.yml”等节点由于其标签而没有相同的宽度。我希望相同等级的节点在左侧对齐,无论其宽度如何。
我看过其他类似的相关帖子,但我不想强制节点宽度。
还有其他方法吗?
预先感谢您的回答并祝您有美好的一天。
PS:这是我的图形代码示例:
strict digraph projetcStructure {
graph [overlap=false, splines=ortho, ranksep=0.05]
edge[arrowhead=none, color=black]
node[fontname="DejaVu Sans Mono", fontsize=14]
"e0ec0f89f0745e25b725768b304be71e" [shape=folder, style=filled, colorscheme=ylgnbu3, label=<<TABLE><TR><TD WIDTH="20" HEIGHT="20" FIXEDSIZE="TRUE"><IMG SRC="/mnt/e/Documents/3eme/TechnicalReport/foldertree/octicons/file-directory.png" SCALE="TRUE"/></TD><TD>TechnicalReport</TD></TR></TABLE>>, color=2]
"77a7da2a6f864418dd23f49f9c5e9804" [shape=note, style=filled, colorscheme=ylgnbu3, width=3.7555555555555555, label=<<TABLE><TR><TD WIDTH="20" HEIGHT="20" FIXEDSIZE="TRUE"><IMG SRC="/mnt/e/Documents/3eme/TechnicalReport/foldertree/octicons/git-merge.png" SCALE="TRUE"/></TD><TD>.gitignore</TD></TR></TABLE>>, color=1]
"373d5e485b88f76e79d5bab15a88759e" [shape="point", width=0, height=0]
"8e58ce33bdaaa1db79bab7080019c6fe" [shape=note, style=filled, colorscheme=ylgnbu3, width=3.7555555555555555, label=<<TABLE><TR><TD WIDTH="20" HEIGHT="20" FIXEDSIZE="TRUE"><IMG SRC="/mnt/e/Documents/3eme/TechnicalReport/foldertree/octicons/travis.png" SCALE="TRUE"/></TD><TD>.travis.yml</TD></TR></TABLE>>, color=1]
"b56aa426f8ad0d8a7704c909f2473b70" [shape="point", width=0, height=0]
"98a5f187b3527ca7f00643e7907b3453" [shape=note, style=filled, colorscheme=ylgnbu3, width=3.7555555555555555, label=<<TABLE><TR><TD WIDTH="20" HEIGHT="20" FIXEDSIZE="TRUE"><IMG SRC="/mnt/e/Documents/3eme/TechnicalReport/foldertree/octicons/book.png" …
Run Code Online (Sandbox Code Playgroud) 我想知道如何在Fortran中最好地处理一个带有未知等级参数的子程序.例如:
Real * 8 :: array1(2,2),array2(2,2,3)
call mysubroutine(array1)
call mysubroutine(array2)
Run Code Online (Sandbox Code Playgroud)
至于现在,我总是需要修复子程序中的形状(等级数).
例如,内在子程序random_number(array)可以做到.(但也许它不是用Fortran编写的?)
我需要在 MySQL 中对行进行排序并根据该顺序为每一行分配一个数字。ORDER BY
正在按预期工作,但不是ROW_NUMBER()
。
这有效:
USE my_database;
SELECT
id
,volume
FROM my_table
ORDER BY volume;
Run Code Online (Sandbox Code Playgroud)
这不起作用:
USE my_database;
SELECT
id
,volume
,ROW_NUMBER() over(ORDER BY volume)
FROM my_table
ORDER BY volume;
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
SELECT id ,volume ,ROW_NUMBER() over(ORDER BY volume) FROM my_table ORDER BY volume 错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在第 4 行 0.000 秒处的“(ORDER BY volume) FROM my_table ORDER BY vol”附近使用的正确语法
我做错了什么,我该如何使它工作?
我也试过RANK()
,DENSE_RANK()
这给出了同样的问题。
我在 SQL Server 中有一个这样的表 -
ID Employee_id group_field_code from_date To_date
================================================================================
1 44855 055 2015-04-01 00:00:00 2015-04-02 17:37:26
2 44855 055 2015-04-02 17:37:27 2015-04-25 09:31:10
3 44855 055 2015-04-25 09:31:11 2015-09-18 14:58:59
4 44855 053 2015-09-18 15:00:00 2016-04-02 02:58:59
5 44855 055 2016-04-02 03:00:00 2016-05-26 02:58:59
6 44855 055 2016-05-25 13:25:23 2016-09-07 14:58:59
7 44855 055 2016-05-26 03:00:00 2016-05-25 13:25:22
8 44855 052 2016-09-07 15:00:00 2017-05-22 02:58:59
9 44855 055 2017-05-22 03:00:00 NULL
Run Code Online (Sandbox Code Playgroud)
我想要的只是当组字段更改时一行的新排名。就像-对于ID 1-3(group_code 55)我想要一个排名,对于ID 4(group_Code更改,53)我想要另一个排名,然后对于ID 5(group_code 5重新到达)我想要另一个排名,依此类推。在 SQL …
我有一个矩阵 A = np.array([[1,1,1],[1,2,3],[4,4,4]]) 我只想要新矩阵中的线性独立行。答案可能是 A_new = np.array([1,1,1],[1,2,3]]) 或 A_new = np.array([1,2,3],[4,4,4])
由于我有一个非常大的矩阵,所以我需要将矩阵分解为更小的线性独立满秩矩阵。有人可以帮忙吗?
M1
我有一个包含列和M2
的数据库M3
。这些M值对应于通过每种方法获得的值。我现在的想法是为他们每个人制作一个排名列。对于M1
和M2
,排名将从最高值到最低值,M3
反之亦然。我做了一个输出表给你看。
df1<-structure(list(M1 = c(400,300, 200, 50), M2 = c(500,200, 10, 100), M3 = c(420,330, 230, 51)), class = "data.frame", row.names = c(NA,-4L))
> df1
M1 M2 M3
1 400 500 420
2 300 200 330
3 200 10 230
4 50 100 51
Run Code Online (Sandbox Code Playgroud)
输出
> df1
M1 rank M2 rank M3 rank
1 400 1 500 1 420 4
2 300 2 200 2 330 3
3 200 3 …
Run Code Online (Sandbox Code Playgroud) rank ×10
python ×2
sql ×2
apache-spark ×1
c++ ×1
dataframe ×1
fortran ×1
graphviz ×1
heap ×1
java ×1
matrix ×1
mysql ×1
nodes ×1
ordinal ×1
pandas ×1
postgresql ×1
r ×1
ranking ×1
row-number ×1
sql-order-by ×1
sql-server ×1