C# BinarySearch

2139 ワード

前回社内試験で合格しましたが、使ったことがなくて、大きな試験に合格しました.今日本を読んでいるうちにまたこの方法を見たので、少し分析しました.
    public  class Test

    {

        

        public static void Main(string[] args) 

        {

            int bookIndex;

            string[] book1 = { "book1", "book7", "book3" };

            bookIndex = Array.BinarySearch(book1,"book3");

            Console.WriteLine(bookIndex);



            Array.Sort(book1);

            bookIndex = Array.BinarySearch(book1, "book3");

            Console.WriteLine(bookIndex);

            Console.ReadLine();

        }

    }

以上のコードで得られた結果は
-2
1
なぜ同じBirnarySearchなのか、得られた結果は違います.
それは,BirnarySearchは二分アルゴリズムを用いており,BirnarySearchで検索する前に配列を並べ替える必要があるからである.
 
次に、BirnarySearchが実際に配列内のオブジェクトのインデックス値を取りに来たという疑問があります.通常、インデックス値の取得方法はIndexOfですが、BirnarySearchとIndexOfにはどのような違いがありますか.
BinarySearchはバイナリ探索アルゴリズムであり,複雑度はO(log n)であり,より効率的であるが,先にソートする必要がある.
IndexOfは線形探索アルゴリズムであり,複雑度はO(n)であり,一般的には単純なタイプにのみ適用される.