예제 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello Word");
            int        n      = 10000;
            Random     rnd    = new Random();
            int        search = rnd.Next(0, n);
            List <int> List   = new List <int>();
            OneList    List1  = new OneList();

            for (int i = 1; i <= n; i++)
            {
                List.Add(i);
                List1.Add(i);
                //Console.Write(List1 + " ");
            }
            foreach (int item in List1)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine("\n");
            Console.WriteLine("List statistic:\n");
            Console.WriteLine("Search key: " + search);
            Console.WriteLine("\nBasic Search:\n");
            Stopwatch bsw    = Stopwatch.StartNew();
            int       bfound = List1.Element(search);

            bsw.Stop();
            Console.WriteLine("Found key: " + List1.Element(search));
            Console.WriteLine("Elapsed time : " + bsw.Elapsed);
            Console.WriteLine("\nBinary Search:\n");
            Stopwatch sw    = Stopwatch.StartNew();
            int       found = BinSearch(List1, search);

            sw.Stop();
            Console.WriteLine("Found key: " + BinSearch(List1, search));
            Console.WriteLine("Elapsed time : " + sw.Elapsed);
            //Console.WriteLine(List1.Element(26));

            Console.WriteLine("\nPress any key to Exit");
            Console.ReadKey();
        }
예제 #2
0
        static int BinSearch(OneList List, int key)
        {
            int left  = 0;
            int mid   = 0;
            int right = List.Count();

            while (!(left >= right))
            {
                mid = left + (right - left) / 2;
                if (List.Element(mid) == key)
                {
                    return(mid);
                }
                if (List.Element(mid) > key)
                {
                    right = mid;
                }
                else
                {
                    left = mid;
                }
            }
            return(-(1 + left));
        }