标题:p144 【7-12】两个时间相减,如何得到毫秒级别的时间差?
只看楼主
lxsxd
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:153
专家分:357
注 册:2014-4-15
结帖率:96.15%
已结贴  问题点数:10 回复次数:7 
p144 【7-12】两个时间相减,如何得到毫秒级别的时间差?
一、题目
p144  【7-12】用选择排序实现一组数组排序。
【阐述】选择排序的基本思想是:每一趟在N个记录中选取关键字最小的记录作为有序序列中第一个记录。

namespace 书本例题
{
    public class SelectionSorter
    {
        private int min;
        public void Sort(int[] list)
        {
            int seek = 0;
            int comparison = 0;
            for (int i = 0; i < list.Length - 1; i++)
            {
                min = i;
                for (int j = i + 1; j < list.Length; j++)
                {
                    seek++;
                    if (list[j] < list[min])
                    {
                        comparison++;
                        min = j;
                    }                       
                }
                    int t =list [min];
                    list [min]=list [i];
                    list [i]=t;
            }
            Console.WriteLine("\n查找了{0}次,比较了{1}次", seek, comparison);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DateTime TimeStart = DateTime.Now;
            int[] iArray = new int[] { 78, 89, 90, 56, 79, 345, 217, 5, 13, 88 };
            Console.WriteLine("排序前的数组:");
            for (int m = 0; m < iArray.Length; m++)
            {
                Console.Write("{0}  ", iArray[m]);
            }
            SelectionSorter ss = new SelectionSorter();
            ss.Sort(iArray);
            Console.WriteLine();
            Console.WriteLine("排序后的数组:");
            for (int m = 0; m < iArray.Length; m++)
            {
                Console.Write("{0}  ", iArray[m]);
            }
            DateTime TimeEnd = DateTime.Now;
            Console.WriteLine("\n本次选择排序开始时间为:{0:yyyy:MM:dd:ss:fffffff},\n本次选择排序结束时间为:{1:yyyy:MM:dd:ss:fffffff}.",
                             TimeStart, TimeEnd);
            
            Console.ReadKey();
        }
    }
}

二、困惑
这段程序中有两个时间:第一,程序开始运行的时间TimeStart,第二,程序运行结束的时间TimeEnd。现在,我想用这两个时间进行相减,从而得到时间差,这个时间差就是程序运行排序的时间。请问:我如何得到?
请高手大侠给予解答和帮忙,谢谢!
搜索更多相关主题的帖子: comparison private public 关键字 时间差 
2014-10-13 11:22
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
想得到毫秒级差别  貌似挺难

DO IT YOURSELF !
2014-10-13 13:31
afdoa83
Rank: 4
等 级:业余侠客
威 望:7
帖 子:43
专家分:262
注 册:2012-7-31
得分:0 
记得取系统运行时间就是毫秒的时间。如果需要非常精准的时间需要硬件支持。
2014-10-13 14:44
lxsxd
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:153
专家分:357
注 册:2014-4-15
得分:0 
DateTime TimeStrart=DateTime .Now;  //程序运行时获取当前时间;
            int[] iArray = new int[] { 78, 89, 90, 56, 79, 345, 217, 5, 13, 88 };
            Console.WriteLine("排序前的数组:");
            for (int m = 0; m < iArray.Length; m++)
            {
                Console.Write("{0}  ", iArray[m]);
            }
            SelectionSorter ss = new SelectionSorter();
            ss.Sort(iArray);
            Console.WriteLine();
            Console.WriteLine("排序后的数组:");
            for (int m = 0; m < iArray.Length; m++)
            {
                Console.Write("{0}  ", iArray[m]);
            }
            DateTime TimeEnd = DateTime .Now ;  //程序结束后获取当前时间
            TimeSpan Ts = TimeEnd-TimeStrart;
            Console.WriteLine("\n本次程序开始时间为:{0:yyyy:MM:dd hh:mm:ss.fffffff},\n本次程序结束时间为
:{1:yyyy:MM:dd hh:mm:ss.fffffff},\n本次程序运行时间为:{2}",
                TimeStrart,TimeEnd,Ts.TotalMilliseconds.ToString());  //第一种方式显示毫秒级别的时间差;
            Console.WriteLine("本次程序运行时间为:{0}", Ts.TotalMilliseconds);//第二种方式显示毫秒级别的时间差;

新的困惑:每次运行,所得的时间差会不同,这时为什么?请看附图:


艰难地走在C#自学的路上…………
2014-10-13 16:13
afdoa83
Rank: 4
等 级:业余侠客
威 望:7
帖 子:43
专家分:262
注 册:2012-7-31
得分:10 
这个牵扯到计算机体系架构及c#运行机制。前者总的来说是应为中断,需要先关闭所有中断,然后再跑你的代码。之后再开中断。需要汇编和pe结构知识。如果是后者,我觉得没有研究的必要了。
2014-10-13 16:44
afdoa83
Rank: 4
等 级:业余侠客
威 望:7
帖 子:43
专家分:262
注 册:2012-7-31
得分:0 
脙茠脝鈥櫭冣
2014-10-13 18:54
afdoa83
Rank: 4
等 级:业余侠客
威 望:7
帖 子:43
专家分:262
注 册:2012-7-31
得分:0 
脙茠脝鈥櫭冣
2014-10-13 18:55
leisiege
Rank: 4
等 级:业余侠客
威 望:8
帖 子:95
专家分:235
注 册:2015-10-22
得分:0 
c#中有个专门的stopwacther。就是干这个事情的。
2015-10-22 16:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-437194-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.318042 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved