![]() |
1
3
我将使用长度为35的int数组(因为您说的范围是1-34)来记录数字的状态。
所以如果你想在列表中添加一个数字i:
要从列表中删除i:
想知道名单上所有的数字吗?
下面的示例可以帮助您更好地理解我的代码:
|
![]() |
2
2
在14个值的情况下,这是一个非常小的数组,我不认为切换到更智能的数据结构(如列表)将为您赢得多少好处,特别是如果您快速进行良好的随机访问。在这种规模下,即使是二进制搜索也可能比线性搜索慢。您确定,例如,在副本上插入不满足您的性能要求吗? |
![]() |
3
1
你注意到的“经常”发生的事情 不 程序中的瓶颈-通常令人惊讶的是实际的瓶颈是什么。在执行任何优化之前,您应该编写一些简单的代码并测量程序的实际性能。
假设这是瓶颈,不同方法的big-O性能在这里将不相关,因为数组的大小很小。只需尝试几种不同的方法,测量结果,看看哪种方法表现最好,然后选择这种方法就更容易了。如果您已经遵循了第一段中的建议,那么您已经有了一个profiler设置,也可以用于此步骤。 |
![]() |
4
1
在中间插入一个
|
![]() |
5
0
使用蛮力方法是最好的选择,因为14不是一个数字:)。然而,这并不是一个可扩展的决定,因为14日有一天会变成14000日,这将导致问题 |
|
6
0
你的数组最常用的操作是什么? 插入?阅读?
顺便问一下,你试过System.Collections.Generic.SortedDictionary ot System.Collections.Generic.SortedList吗? |
![]() |
7
0
如果你在.Net 4上,你应该看看
|
|
8
0
如果数组中没有重复的值,并且可能的值不会改变,那么使用一个固定大小的数组,其中的值等于索引是一个不错的选择 插入和读取都是O(1) |
|
9
0
你有一个从1到34的可能值范围,这是相当窄的。所以最快的方法可能是使用一个有34个插槽的阵列。要插入数字n,只需执行数组[n-1]++并将其删除,请执行数组[n.1]--(如果n>0)。 若要检查集合中是否存在值,请执行数组[n-1 ] & gt;0。 编辑 :该死……丹尼跑得更快。:) |
|
10
0
写一个方法获取一个整数数组,并使用冒泡排序将它们排序到位。不允许该方法创建任何其他数组。冒泡排序是一种简单的排序算法,它通过循环遍历要排序的数组,比较每对相邻元素,如果它们的顺序不对,则进行交换。 |
![]() |
ZeroZ30o · std::包含原子的类的向量 6 年前 |
![]() |
physlexic · 获取文件夹中文件的百分比 6 年前 |
![]() |
Magix · 复制从抽象类派生的对象 6 年前 |
![]() |
physlexic · 在目录之间随机移动多个文件 6 年前 |
![]() |
pindare · 将文件从层次结构递归复制到单个平面文件夹 6 年前 |
![]() |
KayV · 将特定文件从目录和子目录复制到mac中的目标文件夹中 6 年前 |