diff --git a/Hello.java b/Hello.java index c19662a716f3a307415a09065c03ea211307fcc4..c79b080794dc7cfcbf835b61f0b9a8504e78605f 100644 --- a/Hello.java +++ b/Hello.java @@ -49,4 +49,39 @@ public class Hello return fibonacci; } + + /** + * 对整数数组进行冒泡排序(升序) + * + * @param arr 待排序的整数数组,可以为null或空数组 + * @return 排序后的数组(原地排序,返回同一数组引用),如果输入为null则返回null + * @throws IllegalArgumentException 当输入数组包含null元素时抛出(此实现不处理null元素) + */ + public static int[] bubbleSort(int[] arr) { + if (arr == null || arr.length <= 1) { + return arr; + } + + int n = arr.length; + boolean swapped; + + for (int i = 0; i < n - 1; i++) { + swapped = false; + for (int j = 0; j < n - 1 - i; j++) { + if (arr[j] > arr[j + 1]) { + // 交换相邻元素 + int temp = arr[j]; + arr[j] = arr[j + 1]; + arr[j + 1] = temp; + swapped = true; + } + } + // 如果本轮没有发生交换,说明数组已经有序,提前结束 + if (!swapped) { + break; + } + } + + return arr; + } } \ No newline at end of file