标题:排序算法测出的时间以理论不符,求讨论
只看楼主
cquerdao
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-4-21
结帖率:0
已结贴  问题点数:20 回复次数:1 
排序算法测出的时间以理论不符,求讨论
最近在复习c#写的插入排序,冒泡排序,选择排序的时间消耗。理论上插入排序效率最低,所花时间应该最长,但是我换了几种方法测试,结果统计出来的时间插入排序最少。其中原因有哪些可能呢?。。
程序代码:
using System;

 using Sorts.Sorts;

 using System.Diagnostics;
namespace Sorts

 {
     class Program
     {
        static void Main()
         {
             System.IntPtr ptr = new IntPtr(0x0001);
             Process.GetCurrentProcess().ProcessorAffinity = ptr;
            double insertresult = 0.0;
             double bubbleresult = 0.0;
             double selectionresult = 0.0;
            Stopwatch watch1 = new Stopwatch();
             Stopwatch watch2 = new Stopwatch();
             Stopwatch watch3 = new Stopwatch();

             Timing sortTime = new Timing();
            for (int i = 0; i < 120; i++)
             {
                 DataSource t = new DataSource(2000);
                 t.FullDataSource(2000, 0, 100);
                 DataSource p = new DataSource(t);
                 DataSource q = new DataSource(t);
                BubbleSortClass bubblesort = new BubbleSortClass(q);
                 //sortTime.StartIt();
                 watch1.Start();
                 bubblesort.BubbleSort();
                 watch1.Stop();
         
                 bubbleresult += watch1.ElapsedMilliseconds;
                 watch1.Reset();
     
                 SelectionSortClass selectionsort = new SelectionSortClass(p);
                 //sortTime.StartIt();
                 watch2.Start();
                 selectionsort.SelectionSort();
                 watch2.Stop();
                 selectionresult += watch2.ElapsedMilliseconds;
                 watch2.Reset();
              
                 InsertSortClass insertsort = new InsertSortClass(t);
                 //sortTime.StartIt();
                 watch3.Start();
                 insertsort.InsertSort();
                 watch3.Stop();
                 insertresult += watch3.ElapsedMilliseconds;
                 watch3.Reset();
            }
             Console.WriteLine("冒泡排序所花时间为:" + bubbleresult / 120);
             Console.WriteLine("选择排序所花时间为:" + selectionresult / 120);
             Console.WriteLine("插入排序所花时间为:" + insertresult / 120);
            Console.Read();
         }
     }

 }
其中datasource是封装了数组的数据源
搜索更多相关主题的帖子: 时间 
2013-04-21 12:47
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:20 
插入排序从理论上来说是最快的,通常比冒泡排序快一倍,比选择排序还要快一点。
2013-04-21 13:55



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




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

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