Die binäre Suche ist ein grundlegender Algorithmus, den jeder Entwickler verstehen sollte. Er bietet eine äußerst effiziente Möglichkeit, nach Elementen in einem sortierten Array zu suchen. Dieser Algorithmus basiert auf einem „Teile-und-herrsche“-Ansatz, der es ihm ermöglicht, den Suchraum mit jedem Schritt zu halbieren. In diesem Artikel untersuchen wir die binäre Suche in JavaScript und Java und behandeln iterative und rekursive Implementierungen.
Binäre Suche ist ein Algorithmus, der entwickelt wurde, um die Position eines Zielwerts innerhalb eines sortierten Arrays zu finden. Durch die Ausnutzung der Sortierung des Arrays schränkt die binäre Suche den Suchraum effizient ein und erreicht eine zeitliche Komplexität von O(log n). Dies ist viel schneller als eine lineare Suche in großen Datensätzen.
Hier ist eine allgemeine Übersicht:
Lassen Sie uns in die Codebeispiele eintauchen.
In JavaScript verwendet der iterative Ansatz eine Schleife, um eine binäre Suche durchzuführen. So sieht es aus:
const binarySearch = (arr, target) => { let startIndex = 0; let endIndex = arr.length - 1; while (startIndex <= endIndex) { let midIndex = Math.floor((startIndex + endIndex) / 2); if (arr[midIndex] === target) { return midIndex; // Target found } else if (arr[midIndex] < target) { startIndex = midIndex + 1; // Search in the right half } else { endIndex = midIndex - 1; // Search in the left half } } return -1; // Target not found }; let nums = [-1, 0, 3, 5, 9, 12]; console.log(binarySearch(nums, 9)); // Output: 4 console.log(binarySearch(nums, 2)); // Output: -1
In Java ist die iterative Implementierung ziemlich ähnlich, mit Anpassungen für die Java-Syntax:
public class BinarySearchExample { public static int binarySearch(int[] arr, int target) { int startIndex = 0; int endIndex = arr.length - 1; while (startIndex <= endIndex) { int midIndex = (startIndex + endIndex) / 2; if (arr[midIndex] == target) { return midIndex; // Target found } else if (arr[midIndex] < target) { startIndex = midIndex + 1; // Search in the right half } else { endIndex = midIndex - 1; // Search in the left half } } return -1; // Target not found } public static void main(String[] args) { int[] nums = {-1, 0, 3, 5, 9, 12}; int target = 9; int result = binarySearch(nums, target); if (result != -1) { System.out.println("Element found at index: " + result); } else { System.out.println("Element not found in the array."); } } }
In beiden Implementierungen:
Für den rekursiven Ansatz definieren wir die Funktion so, dass sie sich selbst mit aktualisierten Indizes aufruft, bis das Ziel gefunden wird oder der Suchbereich leer ist.
In JavaScript ist hier eine rekursive binäre Suchimplementierung:
const binarySearch = (arr, target) => { let startIndex = 0; let endIndex = arr.length - 1; while (startIndex <= endIndex) { let midIndex = Math.floor((startIndex + endIndex) / 2); if (arr[midIndex] === target) { return midIndex; // Target found } else if (arr[midIndex] < target) { startIndex = midIndex + 1; // Search in the right half } else { endIndex = midIndex - 1; // Search in the left half } } return -1; // Target not found }; let nums = [-1, 0, 3, 5, 9, 12]; console.log(binarySearch(nums, 9)); // Output: 4 console.log(binarySearch(nums, 2)); // Output: -1
In Java kann eine ähnliche rekursive binäre Suche wie folgt implementiert werden:
public class BinarySearchExample { public static int binarySearch(int[] arr, int target) { int startIndex = 0; int endIndex = arr.length - 1; while (startIndex <= endIndex) { int midIndex = (startIndex + endIndex) / 2; if (arr[midIndex] == target) { return midIndex; // Target found } else if (arr[midIndex] < target) { startIndex = midIndex + 1; // Search in the right half } else { endIndex = midIndex - 1; // Search in the left half } } return -1; // Target not found } public static void main(String[] args) { int[] nums = {-1, 0, 3, 5, 9, 12}; int target = 9; int result = binarySearch(nums, target); if (result != -1) { System.out.println("Element found at index: " + result); } else { System.out.println("Element not found in the array."); } } }
Bei jedem rekursiven Aufruf:
Binäre Suche ist ideal, wenn:
Wenn das Array unsortiert ist, sollten Sie erwägen, es zuerst zu sortieren (mit O(n log n)-Kosten) oder eine lineare Suche zu verwenden, wenn der Datensatz klein ist.
Die binäre Suche ist ein vielseitiger und effizienter Algorithmus zum Auffinden von Elementen in sortierten Arrays. Unabhängig davon, ob Sie sich für den iterativen oder den rekursiven Ansatz entscheiden, ist das Verständnis der binären Suche für die Verbesserung der Leistung Ihrer Anwendungen hilfreich. Probieren Sie beide Implementierungen in JavaScript und Java aus, um ein Gefühl dafür zu bekommen, wie sie funktionieren, und finden Sie heraus, welche für Ihren spezifischen Anwendungsfall am besten geeignet ist.
Das obige ist der detaillierte Inhalt vonBeherrschen der binären Suche in JavaScript und Java: Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!