データ構造とアルゴリズム


どのような検索ですか?


コンピュータサイエンスでは、探索は「アイテムのコレクションから特定のプロパティを持つアイテムを見つけるプロセス」ですアイテムは、格納されたレコードまたは配列要素から他の検索スペースの要素にすることができます.

しかし、なぜ我々は検索が必要ですか?



答えは-あなたが探しているデータを見つけるには、データの大規模なセットから.たとえば、長い連絡先リストからお友達の電話番号を見つける簡単にアルゴリズムを検索して使用することができます.ここでは、連絡先リストは、アイテムのコレクションであり、あなたの友人の番号は、指定されたプロパティのデータです.
探索アルゴリズムのいくつかの例は線形探索,二値探索,補間探索などである.

線形探索とは


線形探索は、コレクション内のすべての項目を順番にチェックする単純な検索アルゴリズムです.マッチが見つかった場合、項目が返されます.
要素の順序が不明な配列を指定した場合を想定します.この場合、配列の各要素をスキャンして、指定したプロパティを持つ要素を見つける必要があります.
このアルゴリズムは次のように記述できます:
  • アレーARRとアイテムを見つけられます.
  • 最初の要素をチェックします.データに等しい場合は、最初の要素の位置を返します.その他の要素をチェックします.
  • 最後の要素が比較されるまでチェックしてください.
  • データが配列にない場合、- 1を返します.
    この種の線形探索は、無順序線形探索と呼ばれる
  • public int unorderedLinearSearch(int[] Arr, int data)
    {
        for(int i=0; i<Arr.length; i++){
            if (Arr[i] == data)
                return i;
    } 
        return -1;
    }
    
    
    時間の複雑さ:o(n)、最悪の場合、完全配列をスキャンします.
    空間の複雑さ: O ( 1 )
    さて、配列ARRがソートされている場合、すなわち、要素の順序を知っているなら、以下のように検索を行うことができます.
    この例を順序線形探索と呼ぶ
    public int orderedLinearSearch(int[] Arr, int data)
    {
        for(int i=0; i<Arr.length; i++){
            if (Arr[i] == data)
                return i;
            else if(Arr[i] > data)
                 return -1;
    } 
        return -1;
    }
    
    
    データの場合には、時間の複雑さをさらに最適化できます.
    o(n)からo(1)までのアレーの最後のポジションの
  • または
  • はO ( n )からO ( n/2 )までの配列には存在しません.
    左右の位置から要素をチェックすることによって.
  • public int optimiseLinearSearch(int[] Arr, int data)
    {
        int left = 0; 
        int length = Arr.length; 
        int right = length - 1; 
        int position = -1; 
    
        for (left = 0; left <= right;){
    
             if (Arr[left] == search_Element)  
                { 
                    position = left; 
                    System.out.println(position); 
                    break; 
                } 
    
             if (Arr[right] == search_Element)  
                { 
                    position = right; 
                    System.out.println(position); 
                    break; 
                } 
    
                left++; 
                right--; 
         } 
            if (position == -1) 
                System.out.println("data not found"); 
        } 
    }
    
    
    おめでとう!今、どのようなアルゴリズムを検索し、どのように線形検索アルゴリズムを実装知っている.
    次のブログでは、いくつかのデータ構造とアルゴリズムの概念を見ていきます!
    接続する
    読んでくれてありがとう!😃