zoukankan      html  css  js  c++  java
  • 基本排序算法(冒泡排序,选择排序,插入排序)后续[时间测试]

    using System;
    using System.Diagnostics;
    
    namespace TestCArray
    {
        class Program
        {
            static void Main(string[] args)
            {          
                Timing sortTime = new Timing();
    
                // int numItems = 1000;
                // int numItems = 10000;
                int numItems = 100000;
                CArray theArray; 
                      
                theArray = new CArray(numItems);
                sortTime.StartTime();
                theArray.InsertionSort();
                sortTime.StopTime();
                Console.WriteLine("InsertionSort ----->" + sortTime.Result().TotalMilliseconds);
                theArray.Clear();
    
                theArray = new CArray(numItems);
                sortTime.StartTime();
                theArray.BubbleSort();
                sortTime.StopTime();
                Console.WriteLine("BubbleSort ----->"+sortTime.Result().TotalMilliseconds);
                theArray.Clear();
    
                theArray = new CArray(numItems);
                sortTime.StartTime();
                theArray.SelectionSort();
                sortTime.StopTime();
                Console.WriteLine("SelectionSort ----->" + sortTime.Result().TotalMilliseconds);
                theArray.Clear();
            }
        }
    
    
        public class CArray
        {
            private int[] arr;
            private int upper;
            private int numElements;
    
            Random rnd = new Random(100);
    
            public CArray(int size)
            {
                arr = new int[size];
                upper = size - 1;
                numElements = 0;
    
                Init();
            }
    
            public void Insert(int item)
            {
                arr[numElements] = item;
                numElements++;
            }
    
            public void Init()
            {
                for (int i = 0; i <= upper; i++)
                {
                    Insert(rnd.Next() * 100);
                }
            }
    
            public void DisplayElements()
            {
                Console.Write("---->");
                for (int i = 0; i <= upper; i++)
                {
                    Console.Write(arr[i] + " ");
                }
                Console.WriteLine();
            }
    
            public void Clear()
            {
                for (int i = 0; i <= upper; i++)
                {
                    arr[i] = 0;
                }
    
                numElements = 0;
            }
    
            // 冒泡排序
            public void BubbleSort()
            {
                int temp;
    
                for (int outer = 0; outer <= upper; outer++)
                {
                    for (int inner = 0; inner < upper-outer; inner++)
                    {
                        if (arr[inner+1]<arr[inner])
                        {
                            temp = arr[inner + 1];
                            arr[inner + 1] = arr[inner];
                            arr[inner] = temp;
                        }
                    }
                    //this.DisplayElements();
                }      
            }
    
            // 选择排序
            public void SelectionSort()
            {
                int temp;
                for (int outer = 0; outer < upper; outer++)
                {
                    for (int inner = outer+1; inner <= upper; inner++)
                    {
                        if (arr[outer] > arr[inner])
                        {
                            temp = arr[outer];
                            arr[outer] = arr[inner];
                            arr[inner] = temp;
                        }
                    }
                    //this.DisplayElements();
                }
            }
    
            // 插入排序
            public void InsertionSort()
            {
                int inner, temp;
                for (int outer = 1; outer <= upper; outer++)
                {
                    temp = arr[outer];
                    inner = outer;
    
                    while (inner > 0 && arr[inner-1] >= temp)
                    {
                        arr[inner] = arr[inner - 1];
                        inner -= 1;
                    }
    
                    arr[inner] = temp;
    
                    //this.DisplayElements();
                }
            }
        }
    
        /// <summary>
        /// 时间测试类
        /// </summary>
        public class Timing
        {
            /// <summary>
            /// 记录开始时间
            /// </summary>
            private TimeSpan startingTime;
    
            /// <summary>
            /// 记录方法的用时
            /// </summary>
            private TimeSpan duration;
    
            /// <summary>
            /// 初始化
            /// </summary>
            public Timing()
            {
                startingTime = new TimeSpan(0);
                duration = new TimeSpan(0);
            }
    
            /// <summary>
            /// 结束计时
            /// </summary>
            public void StopTime()
            {
                duration = Process.GetCurrentProcess().Threads[0]
                    .UserProcessorTime.Subtract(startingTime);
            }
    
            /// <summary>
            /// 开始计时
            /// </summary>
            public void StartTime()
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
                startingTime = Process.GetCurrentProcess().Threads[0].UserProcessorTime;
            }
    
            /// <summary>
            /// 获取结果
            /// </summary>
            /// <returns></returns>
            public TimeSpan Result()
            {
                return duration;
            }
        }
    }
    

  • 相关阅读:
    计算字符串相似度算法——Levenshtein
    信息检索参考网站
    文献检索
    【BZOJ】1684: [Usaco2005 Oct]Close Encounter(暴力+c++)
    【BZOJ】1664: [Usaco2006 Open]County Fair Events 参加节日庆祝(线段树+dp)
    【BZOJ】1644: [Usaco2007 Oct]Obstacle Course 障碍训练课(bfs)
    【BZOJ】1652: [Usaco2006 Feb]Treats for the Cows(dp)
    【BZOJ】1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(dp/线段树)
    Codeforces Round #265 (Div. 2)
    中秋节模拟赛之冷月葬花魂(被虐瞎)
  • 原文地址:https://www.cnblogs.com/wjchang/p/3671523.html
Copyright © 2011-2022 走看看