Java作为一种强大的编程语言,不仅因其跨平台能力受到欢迎,还因其丰富的库和简洁的语法而备受开发者青睐。本文将深入探讨Java中一些常用的算法,并通过具体案例及代码示例来展示它们的实际应用。
1. 冒泡排序
案例:对一组学生成绩进行升序排序。
代码示例:
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// 交换 arr[j+1] 和 arr[j]
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
2. 快速排序
案例:对在线商店的产品价格进行快速降序排序。
代码示例:
public static void quickSort(int[] arr, int begin, int end) {
if (begin < end) {
int partitionIndex = partition(arr, begin, end);
quickSort(arr, begin, partitionIndex-1);
quickSort(arr, partitionIndex+1, end);
}
}
private static int partition(int[] arr, int begin, int end) {
int pivot = arr[end];
int i = (begin-1);
for (int j = begin; j < end; j++) {
if (arr[j] > pivot) {
i++;
int swapTemp = arr[i];
arr[i] = arr[j];
arr[j] = swapTemp;
}
}
int swapTemp = arr[i+1];
arr[i+1] = arr[end];
arr[end] = swapTemp;
return i+1;
}
3. 二分搜索
案例:在已排序的电影列表中查找特定电影的索引位置。
代码示例:
public static int binarySearch(int[] arr, int x) {
int l = 0, r = arr.length - 1;
while (l <= r) {
int m = l + (r-l)/2;
// 检查x是否在中间
if (arr[m] == x)
return m;
// 如果x大于中间值,则只能在右半边
if (arr[m] < x)
l = m + 1;
// 否则,只能在左半边
else
r = m - 1;
}
// 未找到元素
return -1;
}
4. 链表操作
案例:在用户链表中添加和删除用户。
代码示例:
class LinkedList {
Node head; // 头节点
static class Node {
int data;
Node next;
Node(int d) {
data = d;
next = null;
}
}
// 添加节点
public void append(int new_data) {
Node new_node = new Node(new_data);
if (head == null) {
head = new Node(new_data);
return;
}
new_node.next = null;
Node last = head;
while (last.next != null)
last = last.next;
last.next = new_node;
return;
}
// 删除节点
void deleteNode(int key) {
Node temp = head, prev = null;
if (temp != null && temp.data == key) {
head = temp.next;
return;
}
while (temp != null && temp.data != key) {
prev = temp;
temp = temp.next;
}
if (temp == null) return;
prev.next = temp.next;
}
}
结语
这些算法的实际应用案例显示了Java的灵活性和强大功能。掌握这些基础算法对于解决现实世界问题非常重要。记住,理论知识的