jag*_*ags 1 arrays sorting data-structures
整数总数= 1000万整数范围= 1 - 1000
因此,很明显整数不是唯一的.我们如何按排序顺序打印它们?我们应该使用位向量或ASCII阵列还是其他一些DS?做这个的最好方式是什么 ?
任何帮助将非常感谢!
最有效的方法是首先确定允许范围内的每个整数出现在数组中的次数.
int[] data = ...
int[] counts = new int[1000];
for (int i = 0; i < data.Length; i++)
counts[data[i] - 1]++;
Run Code Online (Sandbox Code Playgroud)
然后,您可以遍历counts数组并以正确的次数打印相应的整数.
for (int i = 0; i < counts.Length; i++)
{
int count = counts[i];
for (int j = 0; j < count; j++)
Console.WriteLine(i + 1);
}
Run Code Online (Sandbox Code Playgroud)
这个策略是O(n)时间.
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |