如何以毫秒为单位获得时间?

时间:2015-05-24 13:16:32

标签: c#

我想计算C#中冒泡排序算法的时间。但它总是给0.这是我的代码。

public void bubbleSort(int[] arr, ref double time)
{
     var sp = new Stopwatch();
     sp.Start();
     int temp = 0;

     for (int i = 0; i < arr.Length; i++)
     {
          for (int sort = 0; sort < arr.Length - 1; sort++)
          {
               if (arr[sort] > arr[sort + 1])
               {
                    temp = arr[sort + 1];
                    arr[sort + 1] = arr[sort];
                    arr[sort] = temp;
               }
         }  
     }
     sp.Stop();

     time = sp.Elapsed.Milliseconds*1000;
}

在主要时间总是0.我在这段代码中做了什么错误。

2 个答案:

答案 0 :(得分:5)

当您获得Milliseconds时,您只能获得当时的毫秒组件。因此,1.0501s仅列为50ms,而不是1050.1ms。此外,由于这会返回int,因此会看到小数毫秒,这可能就是这么短的算法。

相反,使用TotalMilliseconds,它将以毫秒为单位返回整个时间,并重新调整double - 包括小数部分。

答案 1 :(得分:3)

您需要使用TotalMilliseconds属性

  

获取以整数和小数毫秒表示的当前TimeSpan结构的值。

time = sp.Elapsed.TotalMilliseconds * 1000;