【发布时间】:2013-01-24 01:44:38
【问题描述】:
为了提高速度,我目前正在将一段 Python 代码翻译成 C++。 这是代码(注意,qsort 是我自己编写的快速排序):
base = sys.stdin.readline().split()
n = int(base[0])
m = int(base[1])
mult = m * 10
count = 1
output = []
while count != (n+1):
hold = output + []
if (n - count) + 1 >= mult:
rev = mult
else:
rev = n - count + 1
while rev != 0:
temp = sys.stdin.readline().split()
hold.append((int(temp[0])*count,temp[1], count))
count += 1
rev -= 1
hold = qSort(hold,len(hold))
output = hold[:m]
本质上,我将几行输入添加到一个名为 hold 的临时列表中,该列表包含新项目和现有输出,然后我的快速排序根据项目的值对项目进行排序(作为第一个元素/integer 在附加的元组中)。在 Python 中,这个过程非常简单,因为我只是保留一个元组列表作为保持和输出,每个元组包含三个项目:(1)用于排序的整数,(2)字符串,(3)整数。 我想知道将其转换为 C++ 的最佳方法是什么。我应该维护 3 个单独的数组并同时更新所有数组,还是应该使用列表和元组类。 (我试图让我的代码尽可能快地运行)。此外,在决定使用方法后,如何最好地转换保持和输出之间的相互作用?如何在循环开始时不断有效地刷新保持并在结束时有效地修改输出?
非常感谢任何和所有帮助!干杯,伙计们!
【问题讨论】:
-
Python 内置了非常出色的排序功能。我很好奇你为什么写自己的......也许是某种学习练习?
-
能否将 cmets 添加到您的 Python 代码中?我发现很难跟上。
m、n和rev是什么? -
steveha,我是新手,甚至没有意识到这一点!你是救世主!
标签: c++ python performance translation tuples