Type Data

Algoritma searching adalah suatu metode yang digunakan untuk mencari data tertentu dalam sebuah struktur data seperti array, list, atau tree. Tujuannya adalah untuk menemukan posisi atau keberadaan data yang dicari dalam struktur data dengan cara yang efisien dan efektif. Algoritma searching digunakan pada berbagai jenis aplikasi, seperti mesin pencari, permainan, dan aplikasi bisnis.

Ada beberapa jenis algoritma searching yang umum digunakan di antaranya:

  1. Linear Search :
  2. Algoritma ini sangat sederhana dan mudah dipahami. Algoritma linear search bekerja dengan cara membandingkan setiap elemen pada list atau array secara berurutan hingga data yang dicari ditemukan atau seluruh elemen sudah dibandingkan. Algoritma ini cocok digunakan untuk data yang jumlahnya tidak terlalu besar. Namun, jika data yang dicari berada di posisi akhir atau tidak terdapat dalam list atau array, algoritma ini akan membutuhkan waktu yang lama untuk menyelesaikan pencarian.

    Contoh penggunaan linerar search dalam bahasa C :

        
    #include  
      
    int search(int arr[], int N, int x) 
    { 
        for (int i = 0; i < N; i++) 
            if (arr[i] == x) 
                return i; 
        return -1; 
    } 
      
    // Driver code 
    int main(void) 
    { 
        int arr[] = { 2, 3, 4, 10, 40 }; 
        int x = 10; 
        int N = sizeof(arr) / sizeof(arr[0]); 
      
        // Function call 
        int result = search(arr, N, x); 
        (result == -1) 
            ? printf("Element is not present in array") 
            : printf("Element is present at index %d", result); 
        return 0; 
    }
        
    
  3. Binary Search :
  4. Algoritma binary search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan membandingkan nilai data yang dicari dengan nilai tengah list atau array. Jika nilai data yang dicari lebih besar dari nilai tengah, maka algoritma akan mencari pada setengah kanan list atau array, dan begitu juga sebaliknya. Binary search memiliki kompleksitas waktu yang lebih baik dibandingkan dengan linear search, namun hanya dapat digunakan pada data yang sudah terurut.

    Contoh penggunaan binary search dalam bahasa C :

         
    #include 
    
    int binarySearch(int arr[], int l, int r, int x)
    {
        while (l <= r) {
            int m = l + (r - l) / 2;
            if (arr[m] == x)
                return m;
            if (arr[m] < x)
                l = m + 1;
            else
                r = m - 1;
        }
        return -1;
    }
    // Driver code
    int main(void)
    {
        int arr[] = { 2, 3, 4, 10, 40 };
        int n = sizeof(arr) / sizeof(arr[0]);
        int x = 10;
        int result = binarySearch(arr, 0, n - 1, x);
        (result == -1) ? printf("Element is not present"
                                " in array")
                        : printf("Element is present at "
                                "index %d",
                                result);
        return 0;
    }
                
        
    
  5. Interpolation Search :
  6. Algoritma interpolation search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan memperkirakan posisi data yang dicari berdasarkan nilai data pada posisi awal dan akhir list atau array. Algoritma ini lebih cepat daripada binary search jika data yang dicari terdapat pada posisi awal atau akhir list atau array.

  7. Hash Search :
  8. Algoritma hash search digunakan untuk mencari data pada tabel hash. Algoritma ini bekerja dengan menghitung nilai hash dari data yang dicari dan mencari data tersebut pada tabel hash. Algoritma ini memiliki kompleksitas waktu yang konstan dan sangat cepat, namun membutuhkan memori yang lebih besar.

  9. Exponential Search :
  10. Algoritma exponential search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan memperkirakan posisi data yang dicari dengan cara menggandakan jarak antara posisi awal dan akhir list atau array. Algoritma ini lebih cepat daripada binary search jika data yang dicari terdapat pada posisi awal list atau array.

  11. Jump Search :
  12. Algoritma jump search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan memperkirakan posisi data yang dicari dengan cara melompati beberapa elemen pada list atau array. Algoritma ini lebih cepat daripada linear search, namun lebih lambat daripada binary search.

  13. Fibonacci Search :
  14. Algoritma fibonacci search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan memperkirakan posisi data yang dicari dengan cara menggunakan deret fibonacci. Algoritma ini lebih cepat daripada linear search, namun lebih lambat daripada binary search.

  15. Ternary Search :
  16. Algoritma ternary search digunakan untuk mencari data pada list atau array yang sudah terurut. Algoritma ini bekerja dengan membagi list atau array menjadi tiga bagian dan memeriksa apakah data yang dicari berada pada bagian kiri, tengah, atau kanan. Algoritma ini lebih cepat daripada linear search, namun lebih lambat daripada binary search.

Karakteristik algoritma searching meliputi efisiensi, akurasi, keamanan, modularitas, scalability, keterbacaan, dan kesederhanaan.