Сравнить время сортировки массива - C#
Формулировка задачи:
Доброго времени суток.
Необходимо сравнить два метода сортировки массива.
Решение написал, но вот в ответе почему то выходит время с минусом.
Пример:
1) -449мс;
2) 150мс;
3) 1мс.
Не могу понять почему так происходит.
Если кто сталкивался, подскажите пожалуйста в чем причина вывода отрицательного времени.
Спасибо.
class Program
{
static void Main(string[] args)
{
Sort sort = new Sort();
int size = 10000;
double[] array = sort.getRandomArray(size);
long time = DateTime.Now.Millisecond;
sort.bubbleSort(array);
Console.WriteLine("Сортировка пузырьком заняла: {0} мс",
(DateTime.Now.Millisecond - time));
array = sort.getRandomArray(size);
time = DateTime.Now.Millisecond;
sort.insertionSort(array);
Console.WriteLine("Сортировка вставками заняла: {0} мс",
(DateTime.Now.Millisecond - time));
array = sort.getRandomArray(size);
time = DateTime.Now.Millisecond;
Array.Sort(array);
Console.WriteLine("Сортировка методом Array.Sort(array) заняла: {0} мс ",
(DateTime.Now.Millisecond - time));
Console.ReadLine();
}
}
class Sort
{
public double[] getRandomArray(int size)
{
Random n = new Random();
double[] array = new double[size];
for (int i = 0; i < array.Length; i++)
{
array[i] = n.Next(0, size);
}
return array;
}
public void bubbleSort(double[] array)
{
double temp = 0;
for (int i = 0; i < array.Length; i++)
{
for (int j = 1; j < array.Length - i; j++)
{
if (array[j - 1] > array[j])
{
temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
}
}
}
}
public void insertionSort(double[] array)
{
for(int i = 1; i<array.Length; i++)
{
double currElem = array[i];
int prevKey = i - 1;
while(prevKey >=0 && array[prevKey]>currElem)
{
array[prevKey + 1] = array[prevKey];
prevKey--;
}
array[prevKey + 1] = currElem;
}
}
}Решение задачи: «Сравнить время сортировки массива»
textual
Листинг программы
Console.WriteLine("Сортировка пузырьком заняла: {0} мс",
(DateTime.Now - time).TotalMilliseconds);