有关于数据排序的问题

闲着无聊的时候看看算法,突然发现一个奇怪的事情。很多算法,都会在计算前给数据排序。

从直观上来看。10000条数据,无论排序与否。都要遍历1w次,但是查询效率确实是提升了。

举个例子:


using System.Diagnostics;

int arraySize = 32768;
var data = new int[arraySize];

Random rnd = new Random(0);
for (int c = 0; c < arraySize; ++c)
    data[c] = rnd.Next() % 256;

Array.Sort(data); // 注释的地方

Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
long sum = 0;
for (int i = 0; i < 100000; i++)
{
    // Primary loop
    for (int c = 0; c < arraySize; ++c)
    {
        if (data[c] >= 128)
            sum += data[c];
    }
}
stopwatch.Stop();
// 获取经过的时间
TimeSpan elapsedTime = stopwatch.Elapsed;
// 输出结果
Console.WriteLine("elapsedTime: " + elapsedTime);
// 或者输出毫秒数
Console.WriteLine("TotalMilliseconds: " + elapsedTime.TotalMilliseconds);
Console.WriteLine("Sum: " + sum);
// 重置计时器
stopwatch.Reset();

这段代码不注释排序和注释排序的执行结果相差了3倍

One Reply to “有关于数据排序的问题”

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注