基本排序算法(冒泡排序,选择排序,插入排序)后续[时间测试]

来源:互联网 发布:mac cad 哪个版本好 编辑:程序博客网 时间:2024/05/27 00:49
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;        }    }}

原创粉丝点击