Menu
CoddyTech

Pencarian

Pelajaran 20 dari 23 dalam kursus C++ - Standard Template Library di Coddy.

Pencarian adalah proses menemukan posisi elemen tertentu dalam urutan elemen. 

Algoritma pencarian adalah algoritma yang diberi argumen x dan mencoba menemukan elemen dengan nilai x dalam himpunan nilai tertentu. Jadi, pencarian elemen dengan nilai tersebut mungkin tidak berhasil jika elemen itu tidak ada. 

Ada sejumlah teknik dan metode pencarian, tetapi di C++ kamu akan mempelajari:

  • Pencarian Linear
  • Pencarian Biner

Pencarian Linear

Pencarian Linear adalah teknik pencarian paling dasar dan juga mudah diterapkan di C++. Dalam pencarian linear, sesuai namanya, kunci yang dicari dibandingkan secara berurutan dengan setiap elemen dalam urutan data sampai ditemukan atau urutannya berakhir.

Elemen tidak ditemukan
Linear Search(sequence, key)
	for each item in sequence:
		if item == key
			return item's index

Dalam kode nyata, pencarian linear akan terlihat seperti ini:

int linear_search(int array[], int n, int x)
{
	for(int i = 0; i < n; i++)
		if(array[i] == x)
			return i;
	return 0;
}

int main()
{
	int array[] = {1, 2, 3, 4, 5};
	int n = 5;
	int x = 3;
	
	cout << "The index of the element " << x << " is " << linear_search(array, n, x);
Output:
The index of the element 3 is 2

Seperti yang bisa kamu lihat dari kode di atas, fungsi pencarian linear pada dasarnya melakukan perulangan pada urutan elemen sampai menemukan kecocokan. Jika tidak menemukan kecocokan, fungsi ini mengembalikan -1.


Pencarian Biner

Pencarian Biner adalah algoritma pencarian untuk menemukan posisi elemen, tetapi array harus sudah diurutkan.
Algoritma pencarian biner menggunakan teknik "bagi dan taklukkan" untuk mencari kunci. Urutan elemen berulang kali dibagi menjadi dua, lalu elemen dicari di bagian yang lebih mendekati.

Misalkan kita sedang mencari elemen x = 4

mengatur pointer Pencarian Biner
elemen tengah Pencarian Biner
menemukan elemen tengah Pencarian Biner
elemen tengah Pencarian Biner

Jadi, kode untuk pencarian biner akan terlihat seperti ini.

int binarySearch(int array[], int x, int left, int right) {
  
  while (left <= right) {
    int mid = left + (right - left) / 2;

    if (array[mid] == x)
      return mid;

    if (array[mid] < x)
      left = mid + 1;

    else
      right  = mid - 1;
  }

  return -1;
}

int main()
{
    int array[] = {1, 5, 8, 10, 20};
    int x = 10;
    int n = 5;
    int result = binarySearch(array, x, 0, n - 1);
    
    if(result == -1)
    	cout << "Not found.";
    else
    	cout << "The element is found at " << result;
Output:
The element is found at 3

Ingat apa itu pencarian, apa tujuannya, dan untuk apa kita menggunakannya. Ingat juga cara menerapkan pencarian linear dan pencarian biner. Terus latih teknik tingkat lanjut di C++ melalui latihan.

challenge icon

Tantangan

Sedang

Kamu diberi 10 angka dari input. Pada baris berikutnya terdapat angka N. Pada baris ketiga terdapat N angka yang menunjukkan posisi elemen yang perlu kamu tampilkan di layar.

 

Input
10 20 30 40 50 60 70 80 90 100
3
20
50
80

Output
1 4 7

Coba sendiri

#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

// Enter your code here

int main()
{
    // Enter your code here

    return 0;
}

Semua pelajaran di C++ - Standard Template Library

Latihan sendiri: Compiler C++ online