您的位置:首页 > 其它

冒泡排序,快速排序,插入排序以及二叉树查找的O级时间的比较

2013-03-13 23:42 417 查看
  冒泡排序,快速排序,插入排序以及二叉树查找的O级时间的比较

 

// 2013年3月13日19:19:01   吴新强

using System;

using System.Collections.Generic;

using System.Linq;

using System.Diagnostics;

using System.IO;

namespace Chapter3_SelectionSort

{

    class CArray

    {

     

        static void Main(string[] args)

        {

            CArray ca = new CArray(10);

            Timing tObj = new Timing();

            Random random = new Random(100);//随机数

             

            for (int i= 0;i < 10;i++)

            {

                ca.Insert(random.Next(0, 100));

               

            }

            Console.WriteLine("BubbleSort Before Sorting:");//排序前

            Console.WriteLine();

            ca.DisplayElements();//显示数据

            Console.WriteLine(); // 换行

            tObj.StartTime();//  测试排序时间的开始时间处

            Console.WriteLine();

            Console.WriteLine("BubbleSort During Sorting:");//排序中

            Console.WriteLine();

            ca.BubbleSort();//  调用冒泡排序法进行排序

            Console.WriteLine();

            tObj.StopTime();//  测试排序时间的截止时间

            Console.WriteLine("BubbleSort After Sorting:");//排序后      

            Console.WriteLine();

            ca.DisplayElements();//显示数据

            Console.WriteLine();

            Console.WriteLine("BubbleSort time( .net):" + tObj.Result().TotalMilliseconds + " MS");//  显示冒泡排序法共使用了多少时间

           Console.WriteLine();

           ca.Clear();

           for (int i = 0; i < 10; i++)

           {

               ca.Insert(random.Next(0, 100));

           }

           Console.WriteLine("SelectionSort Before Sorting:");//排序前

           Console.WriteLine();

           ca.DisplayElements();//显示数据

           Console.WriteLine(); // 换行

           tObj.StartTime();//  测试排序时间的开始时间处

           Console.WriteLine();

           Console.WriteLine("SelectionSort During Sorting:");//排序中

           Console.WriteLine();

           ca.SelectionSort();//  调用选择排序法进行排序

           Console.WriteLine();

           tObj.StopTime();//  测试排序时间的截止时间

           Console.WriteLine("SelectionSort After Sorting:");//排序后      

           Console.WriteLine();

           ca.DisplayElements();//显示数据

           Console.WriteLine();

           Console.WriteLine("SelectionSort time( .net):" + tObj.Result().TotalMilliseconds + " MS");//  显示选择排序法共使用了多少时间

           Console.WriteLine();

           ca.Clear();

           for (int i = 0; i < 10; i++)

           {

               ca.Insert(random.Next(0, 100));

           }

           Console.WriteLine("InsertionSort Before Sorting:");//排序前

           Console.WriteLine();

           ca.DisplayElements();//显示数据

           Console.WriteLine(); // 换行

           tObj.StartTime();//  测试排序时间的开始时间处

           Console.WriteLine();

           Console.WriteLine("InsertionSort During Sorting:");//排序中

           Console.WriteLine();

           ca.InsertionSort();//  调用选择排序法进行排序

           Console.WriteLine();

           tObj.StopTime();//  测试排序时间的截止时间

           Console.WriteLine("InsertionSort After Sorting:");//排序后      

           Console.WriteLine();

           ca.DisplayElements();//显示数据

           Console.WriteLine();

           Console.WriteLine("InsertionSort time( .net):" + tObj.Result().TotalMilliseconds + " MS");//  显示选择排序法共使用了多少时间

           Console.WriteLine();

           ca.Clear();

           for (int i = 0; i < 10; i++)

           {

               ca.Insert(random.Next(0, 100));

           }

         //  Console.WriteLine("请输入查找的值:");

           Console.WriteLine();

           ca.DisplayElements();//显示数据

           Console.WriteLine(); // 换行

           tObj.StartTime();//  测试排序时间的开始时间处

           Console.WriteLine();

            Console.WriteLine("请输入查找的值:");

           ca.RbinSearch(5,1,10  );//  调用折半查找法进行查找

          int v=Convert .ToInt32(Console .ReadLine());

        //    if(value==mid)

         //       Console.WriteLine("你查找的值存在!");

        //    else

         //        Console.WriteLine("你查找的值不存在!");

           Console.WriteLine();

           tObj.StopTime();//  测试查找时间的截止时间     

           Console.WriteLine();

           ca.DisplayElements();//显示数据

           Console.WriteLine();

           Console.WriteLine("RbinSearch time( .net):" + tObj.Result().TotalMilliseconds + " MS");//  显示选择排序法共使用了多少时间

        }

        public void BubbleSort()//  冒泡排序法

        {

            int temp;

            for (int outer = upper; outer >= 1; outer--)

            {

                for (int inner = 0; inner <= outer - 1; inner++)

                {

                    if ((int)array[inner] > array[inner + 1])

                    {

                        temp = array[inner];

                        array[inner] = array[inner + 1];

                        array[inner + 1] = temp;

                    }

                }

                this.DisplayElements();

            }

        }

        public void SelectionSort()//  选择排序法

        {

            int temp, min;

            for (int outer = 0; outer <= upper; outer++)

            {

                min = outer;

                for (int inner = outer + 1; inner <= upper; inner++)

                {

                    if (array[inner] < array[min])

                    {

                        min = inner;

                    }

                        temp = array[outer];

                        array[outer] = array[min];

                        array[min]= temp;

                 

                }

                this.DisplayElements();

            }

        }

        public void InsertionSort()//  插入排序法

        {

            int temp, inner;

            for (int outer = 1; outer <= upper; outer++)

            {

               inner = outer;

               temp = array[outer];

               

                   while (inner >0 &&array [inner -1]>=temp)

                    {

                        array [inner]=array [inner -1];

                        inner -= 1;

                    }

                   

                    array[inner] = temp;

                this.DisplayElements();

            }

        }

        public int RbinSearch(int value, int lower, int upper)

        {

            int mid;

            if (lower > upper)

                return -1;

            else

            {

                //  int mid;

                mid = (int)(lower + upper) / 2;

                if (value < array[mid])

                    return RbinSearch(value, lower, mid - 1);

                else if (value == mid)

                    return mid;

                else

                    return RbinSearch(value, mid + 1, upper);

            }

            if (value == mid)

                Console.WriteLine("你查找的值存在!");

            else

                Console.WriteLine("你查找的值不存在!");

       

        }

        private int[] array;

        private int upper;

        private int numElements;

        public CArray(int Size)

        {

            array = new int[Size];

            upper = Size - 1;  // upper 最大长度

            numElements = 0;// 数组变量

        }

        public void Insert(int item)

        {

            array[numElements] = item;

            numElements++;

        }

        public void DisplayElements()// 显示数据

        {

            for (int i = 0; i <= upper; i++)

                Console.Write(array[i] + " ");

        }

        public void Clear()// 删除数据

        {

            for (int i = 0; i < upper; i++)

            {

                array[i] = 0;

                numElements = 0;

            }

        }

    }

    public class Timing   // 时间测试类

    {

        TimeSpan duration;

        public Timing()

        {

            duration = new TimeSpan(0);

        }

        public void StopTime()

        {

            duration=Process.GetCurrentProcess().TotalProcessorTime;

        }

        public void StartTime()

        {

            GC.Collect();

            GC.WaitForPendingFinalizers();

        }

        public TimeSpan Result()

        {

            return duration;

        }

    }

}

/*class CArray

    {

        private int[] array;

        private int upper;

        private int numElements;

        public CArray(int Size)

        {

            array = new int[Size];

            upper = Size - 1;

            numElements = 0;

        }

        public void Insert(int item)

        {

            array[numElements] = item;

            numElements++;

           

        }

        public void DisplayElements()

        {

            for (int i = 0; i <= upper; i++)

                Console.WriteLine(array[i] + "");

        }

        public void Clear()

        {

            for (int i = 0; i < upper i++)

            {

                array [i]=0;

                numElements=0;

            }

        }

    }

}*/

运行结果:

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐