シーケンシャルナビゲーション/バイナリナビゲーション


ナビゲーションとは

  • 以上のデータから所望のデータを探すプロセスを指す.
  • シーヶンスナビゲーション


    これは、先頭から必要なデータを順番に検索する方法です.
  • 時間複雑度O(n)
  • import java.util.ArrayList;
    
    public class SequentialSearch {
    
        public static void main(String[] args) {
    
            ArrayList<Integer> arr = new ArrayList<>();
    
            for (int i = 0; i < 100; i++) {
                arr.add((int) Math.random() * 100);
            }
    
            for (int i = 0; i < arr.size(); i++) {
                if (arr.get(i) == 5) {
                    System.out.println("arr.get(i) = " + arr.get(i));
                    break;
                }
            }
        }
    
    }
    

    バイナリサーチ

  • 参照するデータを2つの部分に分割し、検索するデータの場所
  • を検索する.
  • シーケンスナビゲーションとは異なり、データをソートする必要があることが条件です.
  • バイナリ探索も分割征服の形態である.
  • 時間複雑度O(logn)
  • import java.util.ArrayList;
    import java.util.Collections;
    
    public class BinarySearch {
    
        public boolean Search(ArrayList <Integer> arrayList, int searchData) {
    
            if (arrayList.get(0) == searchData && arrayList.size() == 1) {
                return true;
            } else if(arrayList.get(0) != searchData && arrayList.size() == 1) {
                return false;
            } else if (arrayList.size() == 0) {
                return false;
            }
    
            int mid = arrayList.size() / 2;
    
            if(searchData > arrayList.get(mid)) {
                Search(new ArrayList<>(arrayList.subList(mid, arrayList.size())),searchData);
            } else if (searchData < arrayList.get(mid)) {
                Search(new ArrayList<>(arrayList.subList(0, mid)),searchData);
            } else if (searchData == arrayList.get(mid)) {
                System.out.println("존재합니다.");
                return true;
            }
    
            return false;
    
        }
    
        public static void main(String[] args) {
    
            ArrayList<Integer> arr = new ArrayList<>();
            for (int i = 0; i < 100; i++) {
    
                arr.add((int) (Math.random() * 100));
    
            }
            Collections.sort(arr);
            System.out.println("arr = " + arr);
            BinarySearch binarySearch = new BinarySearch();
            binarySearch.Search(arr, 5);
    
        }
    
    }