Comprendre le tri à bulles Java : plusieurs méthodes d'implémentation courantes, des exemples de code spécifiques sont nécessaires
冒泡排序(Bubble Sort)算法: 1. 从序列的第一个元素开始,对相邻的两个元素进行比较 2. 如果前一个元素大于后一个元素,则交换这两个元素的位置 3. 对序列中的所有相邻元素进行比较和交换操作,一轮比较后,最大(或最小)的元素将位于序列的末尾(或第一位) 4. 重复步骤1-3,进行多轮的比较和交换操作,直到整个序列有序
3.1. Tri à bulles ordinaire
Cette méthode d'implémentation est l'algorithme de tri à bulles le plus basique. Après chaque tour de comparaison, l'élément le plus grand (ou le plus petit) sera. mis en file d'attente à la bonne position. Voici l'exemple de code Java correspondant :
public class BubbleSort { public static void bubbleSort(int[] arr) { if (arr == null || arr.length <= 1) { return; } 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]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } }
3.2. Tri à bulles optimisé
Lors de chaque tour de comparaison, si aucune opération d'échange ne se produit, cela signifie que la séquence est en ordre et que l'algorithme peut se terminer plus tôt. Voici l'exemple de code Java correspondant :
public class BubbleSort { public static void bubbleSort(int[] arr) { if (arr == null || arr.length <= 1) { return; } boolean isSorted = false; for (int i = 0; i < arr.length - 1 && !isSorted; i++) { isSorted = true; for (int j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; isSorted = false; } } } } }
3.3. Tri à bulles amélioré
Lors de chaque tour de comparaison, les éléments les plus grands et les plus petits peuvent être trouvés en même temps et placés respectivement dans les positions correctes. Voici l'exemple de code Java correspondant :
public class BubbleSort { public static void bubbleSort(int[] arr) { if (arr == null || arr.length <= 1) { return; } int left = 0; int right = arr.length - 1; while (left < right) { for (int i = left; i < right; i++) { if (arr[i] > arr[i + 1]) { int temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; } } right--; for (int j = right; j > left; j--) { if (arr[j] < arr[j - 1]) { int temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; } } left++; } } }
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!