La recherche binaire, également connue sous le nom de demi-recherche, est un algorithme de recherche efficace. Son idée de base est la suivante : divisez le tableau ordonné (ou l'ensemble) en deux. Si l'élément central actuel est égal à l'élément cible, la recherche est réussie. Si l'élément central actuel est supérieur à l'élément cible, la moitié gauche est recherchée. ; si l'élément central actuel est inférieur à Pour l'élément cible, recherchez la moitié droite. Répétez les étapes ci-dessus jusqu'à ce que l'élément cible soit trouvé ou que la plage de recherche soit vide et que la recherche échoue.
Ce qui suit est un algorithme binaire implémenté en Java :
public static int binarySearch(int[] arr, int target) { if (arr == null || arr.length == 0) { return -1; } int left = 0; int right = arr.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == target) { return mid; } else if (arr[mid] > target) { right = mid - 1; } else { left = mid + 1; } } return -1; }
La méthode ci-dessus utilise un ensemble de tableaux d'entiers ordonnés et une valeur cible comme paramètres, et renvoie la valeur cible dans le tableau L'index ; si la valeur cible n'existe pas dans le tableau, il renvoie -1.
Le cœur de l'algorithme est la boucle while, qui est exécutée à plusieurs reprises lorsque la gauche et la droite remplissent des conditions spécifiques :
If mid est égal pour cibler, Puis revenez mid et l'algorithme se termine ;
Si mid est supérieur à la cible, continuez la recherche à gauche, c'est-à-dire réglez à droite sur mid - 1 ;
#🎜🎜 #public static void bubbleSort(int[] arr) { int temp; for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { //交换位置 temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } }
public static void selectionSort(int[] arr) { int minIndex; for (int i = 0; i < arr.length - 1; i++) { minIndex = i; for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } //交换位置 int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } }
public static void insertionSort(int[] arr) { int preIndex, current; for (int i = 1; i < arr.length; i++) { preIndex = i - 1; current = arr[i]; while (preIndex >= 0 && arr[preIndex] > current) { arr[preIndex + 1] = arr[preIndex]; preIndex--; } arr[preIndex + 1] = current; } }
public static void quickSort(int[] arr, int left, int right) { if (left < right) { int i = left, j = right, pivot = arr[left]; while (i < j) { while (i < j && arr[j] >= pivot) { j--; } if (i < j) { arr[i++] = arr[j]; } while (i < j && arr[i] <= pivot) { i++; } if (i < j) { arr[j--] = arr[i]; } } arr[i] = pivot; quickSort(arr, left, i - 1); quickSort(arr, i + 1, right); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!