欢迎访问宙启技术站
智能推送

使用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函数来实现算法和数据结构。