• 二分法和冒泡法的比较(快速排序法)


    在为一家xx旅行网,因为要标出最惠价格,而前辈人员用的是冒泡法的方法,这里我把冒泡法和二分法做个小比较。

    using System.Diagnostics; //用来测试时间单位

    static void Main(string[] args)
            {

                List<int> intA = new List<int>(); // 假如有个列表对象,
                while (intA.Count() < 1500)         // 这个列表对象里面有1500条不相同的记录
                {
                    Random r = new Random();
                    int num = r.Next(0,3000);
                    if (!intA.Contains(num))
                    {
                        intA.Add(num);
                        Console.Write(num + ",");
                    }               
                }       

                Stopwatch st = new Stopwatch();//实例化类 由using System.Diagnostics的来的

                st.Start();
                Console.WriteLine("\n二分法最大数为:"+GetMax(intA, 0, intA.Count()));   
                st.Stop();
                Console.WriteLine("\n二分法执行时间" +st.ElapsedMilliseconds.ToString() );

                st.Start();
                Console.WriteLine("\n快速法最大数为:"+ForGetMax(intA));
                st.Stop();
                Console.WriteLine("\n快速法执行时间" + st.ElapsedMilliseconds.ToString());

                Console.ReadKey();

    }

           public static int mid;          

            public static int GetMax(List<int> array, int first, int end)
            {
                int frontHalf, backHalf;          
                mid=(first+end)/2;
                if (first == mid) return array[first];
                frontHalf = GetMax(array, first, mid);
                backHalf = GetMax(array, mid + 1, end);       

                return frontHalf > backHalf ? frontHalf : backHalf;
            }

            public static int ForGetMax(List<int> array)
            {
                int temp = 0;
                if(array.Count()>0)
                {
                    temp = array[0];
                    for (int m = 0; m < array.Count(); m++)
                    {
                        if (temp < array[m]) { temp = array[m]; }
                    }
                }

                return temp;        
            }

    -------------------------华丽的分解线-------------------

    用1500条记录,执行得到结果,所花费的时间:(这里在记录数好像是350后,两个方法所用的时间就不同了)

  • 相关阅读:
    转发自lealii 的博客,如有侵权请通知删除
    SQL注入详解-转发
    IT实用技术资源整理
    JMeter-接口自动化之正则表达式关联
    转发自_destiny如有侵权请联系删除
    二元数组的最小值最大和
    连续区间和大于等于某个数(弱化版)
    独一无二的最小生成树
    牛客小白月赛19 弱版 C
    牛客 安徽大学新生赛 G
  • 原文地址:https://www.cnblogs.com/liuming8208/p/2478378.html
Copyright © 2020-2023  润新知