introduction searching algorithms c
Przegląd algorytmów wyszukiwania w C ++.
W codziennym życiu szukamy czegoś lub innego. Podobnie jak w naszym codziennym życiu, jako programista, musimy wyszukiwać informacje na naszym komputerze. Wyszukiwanie informacji powinno odbywać się szybko, ponieważ nie możemy sobie pozwolić na marnowanie czasu na wyszukiwanie informacji.
Dlatego potrzebujemy wydajnych technik wyszukiwania lub algorytmów, które mogą przeszukać daną informację w krótkim czasie i przekazać ją użytkownikowi, aby mógł wykonać inne zadania.
=> Odwiedź tutaj, aby zapoznać się z pełną listą samouczków języka C ++.
Czego się nauczysz:
Techniki wyszukiwania
Mamy dwie główne techniki wyszukiwania, które są najczęściej wykorzystywane do wyszukiwania informacji.
Obejmują one:
- Wyszukiwanie liniowe
- Wyszukiwanie binarne
W tym samouczku szczegółowo zbadamy obie te techniki wyszukiwania.
Wyszukiwanie liniowe
Jest to najbardziej podstawowa technika wyszukiwania i jest również łatwiejsza do wdrożenia. W wyszukiwaniu liniowym klucz do przeszukania jest porównywany liniowo z każdym elementem zbioru danych. Ta technika działa skutecznie w przypadku liniowych struktur danych.
Rozważmy następującą tablicę.
Powyżej jest tablica siedmiu elementów. Jeśli chcemy wyszukać klucz = 23, to zaczynając od 0thelement, wartość klucza zostanie porównana z każdym elementem. Gdy element kluczowy pasuje do elementu w tablicy, zostanie zwrócona ta konkretna lokalizacja. W tym przypadku lokalizacja 4 zostanie zwrócona, ponieważ para klucz-wartość odpowiada wartości w tej lokalizacji.
Poniżej zaimplementowaliśmy wyszukiwanie liniowe przy użyciu języka C ++ i Java.
Implementacja C ++
#include #include using namespace std; int main() { int myarray(10) = {21,43,23,54,75,13,5,8,25,10}; int key,loc; cout<<'The input array is'<key; for (int i = 0; i<10; i++) { if(myarray(i) == key) { loc = i+1; break; } else loc = 0; } if(loc != 0) { cout<<'Key found at position '< Wynik:
pytania do rozmowy kwalifikacyjnej analityka ds. zapewnienia jakości
Tablica wejściowa to
21 43 23 54 75 13 5 8 25 10
Wpisz klucz do wyszukania: 3
Nie można znaleźć podanego klucza w tablicy
Tablica wejściowa to
21 43 23 54 75 13 5 8 25 10
Podaj klucz do wyszukania: 75
Klucz znaleziony na pozycji 5 w tablicy
Implementacja Java
import java.util.*; import java.lang.*; import java.io.*; public class Main { public static void main(String() args) { int() myarray = {21,43,23,54,75,13,5,8,25,10}; int key,location=0; Scanner sc = new Scanner(System.in); System.out.println('The input array is'); for(int i=0;i<10;i++){ System.out.print(myarray(i)+' '); } System.out.println('
'); System.out.println('Enter key'); key = sc.nextInt(); for(int i = 0; i<10; i++) { if(myarray(i)==key) { location = i+1; break; } else location = 0; } if(location != 0) { System.out.println('key found at location ' + location); } else System.out.println('Key not found'); } }
Wynik:
Tablica wejściowa to
21 43 23 54 75 13 5 8 25 10
Przycisk ENTER
2. 3
klucz znaleziony w lokalizacji 3
najlepszy darmowy konwerter wideo dla systemu Windows
Wyszukiwanie liniowe można przeprowadzić na dowolnej liniowej strukturze danych mającej posortowane lub nieposortowane elementy. Ale jeśli elementów jest zbyt wiele, a element kluczowy zbliża się do końca, trwa to dłużej, ponieważ każdy element jest porównywany z wartością kluczową.
Wyszukiwanie binarne
Wyszukiwanie binarne to technika, która wykorzystuje technikę „dziel i rządź” do wyszukiwania klucza. Działa na posortowanej liniowej liście elementów. Posortowana lista jest podstawowym warunkiem działania wyszukiwania binarnego.
W metodzie wyszukiwania binarnego lista jest wielokrotnie dzielona na pół, a element kluczowy jest przeszukiwany w obu połowach listy, aż do znalezienia klucza.
Na przykład,weźmy następującą posortowaną tablicę 10 elementów.

Powiedzmy, że klucz = 21 ma być przeszukiwany w tablicy.
Obliczmy środkowe położenie tablicy.
Mid = 0 + 9/2 = 4
Na przykład,weźmy następującą posortowaną tablicę 10 elementów.

Klucz = 21
Najpierw porównamy wartość klucza z elementem (mid). Stwierdzamy, że wartość elementu w mid = 21.

W ten sposób znajdujemy klucz = (mid). Stąd klucz został znaleziony.
klucz = 25

Najpierw porównujemy wartość klucza z wartością mid. A więc (21<25), we will directly search for the key in the upper half of the array.
dodaj do tablicy w java

Teraz znowu znajdziemy środek górnej połowy tablicy.
Środek = 4 + 9/2 = 6
Wartość w miejscu (mid) = 25

Teraz porównujemy kluczowy element z elementem środkowym. Więc (25 == 25), więc znaleźliśmy klucz w miejscu (mid).
Wielokrotnie dzielimy tablicę i porównując element kluczowy ze środkiem, decydujemy, w której połowie szukać klucza.
Poniżej podano implementację C ++ i Java do wyszukiwania binarnego.
Implementacja C ++
#include #include using namespace std; int binarySearch(int myarray(), int beg, int end, int key) { int mid; if(end >= beg) { mid = (beg + end)/2; if(myarray(mid) == key) { return mid+1; } else if(myarray(mid) key; location = binarySearch(myarray, 0, 9, key); if(location != -1) { cout<<'Key found at location '< Wynik:
Tablica wejściowa to
5 8 10 13 21 23 25 43 54 75
Wpisz klucz, który ma być przeszukany: 21
Klucz znaleziony w lokalizacji 5

Implementacja Java
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main(String() args) { int() myarray = {5,8,10,13,21,23,25,43,54,75}; int key, location = -1; System.out.println('The input array is'); for(int i=0;i= beg) { mid = (beg + end)/2; if(myarray(mid) == key) { return mid+1; } else if(myarray(mid) Wynik:
Tablica wejściowa to
5 8 10 13 21 23 25 43 54 75
Wpisz klucz do wyszukania
dwadzieścia jeden
lokalizacja klucza to 5
Wyszukiwanie binarne jest bardziej wydajne pod względem czasu i poprawności. Rzadko stosowana jest technika wyszukiwania liniowego, ponieważ jest ona bardziej uciążliwa i wolniejsza. Wyszukiwanie binarne jest znacznie szybsze w porównaniu do wyszukiwania liniowego.
Wniosek
Techniki wyszukiwania pomagają nam wyszukiwać informacje przechowywane na komputerze, aby użytkownik mógł wykonać inne zadania związane z przetwarzaniem informacji. Technika wyszukiwania liniowego jest prosta i łatwiejsza, ale nie jest szeroko stosowana.
Technika wyszukiwania binarnego jest znacznie szybsza i wydajna, dlatego jest szeroko stosowana.
W naszym nadchodzącym samouczku szczegółowo zbadamy różne techniki sortowania.
=> Sprawdź doskonały przewodnik szkoleniowy C ++ tutaj.
rekomendowane lektury
- Wprowadzenie do języka programowania Java - samouczek wideo
- Wprowadzenie do Appium Studio: kluczowe zalety i funkcje
- Algorytmy w STL
- Najlepsza DARMOWA seria samouczków języka C #: najlepszy przewodnik po języku C # dla początkujących
- JMeter Video 1: Wprowadzenie, JMeter Pobieranie i instalacja
- Wprowadzenie do języka Python i proces instalacji
- Co to jest Unix: krótkie wprowadzenie do Uniksa
- Wprowadzenie do Micro Focus LoadRunner - Testowanie obciążenia za pomocą samouczka LoadRunner nr 1