Java语言实现的二分查找算法、冒泡排序算法和一个简单的递归算法(计算阶乘)。
二分查找要求数组是有序的。它通过不断地将查找范围减半,来高效地定位目标值。
public class BinarySearch {
public static int binarySearch(int[] array, int target) {
int left = 0;
int right = array.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (array[mid] == target) {
return mid; // 找到目标值,返回其索引
} else if (array[mid] < target) {
left = mid + 1; // 在右半部分继续查找
} else {
right = mid - 1; // 在左半部分继续查找
}
}
return -1; // 未找到目标值
}
public static void main(String[] args) {
int[] sortedArray = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int target = 7;
int result = binarySearch(sortedArray, target);
if (result != -1) {
System.out.println("Element found at index: " + result);
} else {
System.out.println("Element not found in the array.");
}
}
}
冒泡排序是一种简单的排序算法,它通过重复地交换相邻的元素来排序。
public class BubbleSort {
public static void bubbleSort(int[] array) {
int n = array.length;
boolean swapped;
for (int i = 0; i < n - 1; i++) {
swapped = false;
for (int j = 0; j < n - 1 - i; j++) {
if (array[j] > array[j + 1]) {
// 交换相邻的元素
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
swapped = true;
}
}
// 如果没有发生交换,则数组已经有序
if (!swapped) break;
}
}
public static void main(String[] args) {
int[] array = {64, 34, 25, 12, 22, 11, 90};
bubbleSort(array);
System.out.println("Sorted array: ");
for (int value : array) {
System.out.print(value + " ");
}
}
}
递归是一种函数调用自身的方法,适合用于分解问题。下面是计算阶乘的递归算法。
public class Factorial {
public static int factorial(int n) {
if (n == 0) {
return 1; // 0! = 1
} else {
return n * factorial(n - 1); // 递归调用
}
}
public static void main(String[] args) {
int number = 5;
int result = factorial(number);
System.out.println("Factorial of " + number + " is " + result);
}
}
以上代码展示了如何使用Java实现二分查找、冒泡排序和递归计算阶乘的算法。这些算法在计算机科学中非常基础,也是学习算法和数据结构的重要部分。