使用Java函数来实现常用算法和数据结构
发布时间:2023-07-03 05:48:35
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]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
2. 插入排序:将一个元素插入到已排序的部分数组中的正确位置。
public static void insertionSort(int[] arr) {
int n = arr.length;
for (int i = 1; i < n; ++i) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
二、搜索算法
1. 二分搜索:在有序数组中查找指定元素。
public static int binarySearch(int[] arr, int key) {
int low = 0, high = arr.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == key)
return mid;
if (arr[mid] < key)
low = mid + 1;
else
high = mid - 1;
}
return -1;
}
2. 深度优先搜索:通过递归访问所有可能的路径,直到找到目标。
public static boolean dfs(int[][] graph, int start, int target, boolean[] visited) {
if (start == target)
return true;
visited[start] = true;
for (int i = 0; i < graph.length; i++) {
if (graph[start][i] != 0 && !visited[i]) {
if (dfs(graph, i, target, visited))
return true;
}
}
return false;
}
三、数据结构
1. 数组:使用Java的数组类来创建和操作数组。
int[] arr = new int[5]; // 创建长度为5的整型数组 arr[0] = 1; // 设置 个元素的值 int len = arr.length; // 获取数组长度
2. 链表:定义一个节点类来表示链表中的每个节点,通过链接节点来创建链表。
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
ListNode head = new ListNode(1); // 创建链表的头节点
ListNode node1 = new ListNode(2); // 创建节点1
ListNode node2 = new ListNode(3); // 创建节点2
head.next = node1; // 头节点指向节点1
node1.next = node2; // 节点1指向节点2
以上仅是一些常用算法和数据结构的示例,Java提供了丰富的函数和类来支持更复杂的算法和数据结构的实现。开发者可以根据具体需求选择合适的Java函数来实现算法和数据结构。
