首页 > 编程语言 >java十大算法

java十大算法

时间:2023-07-20 14:01:24浏览次数:43  
标签:arr java 十大 int high 算法 Java public

Java十大算法

Java是一门广泛应用于大量软件开发领域的编程语言。在Java的生态系统中,有许多重要的算法和数据结构,这些算法和数据结构在各个领域中被广泛使用。在本文中,我们将介绍Java中的十大算法,并通过代码示例来解释它们的工作原理。

1. 排序算法

排序算法是计算机科学中最基本和最重要的一类算法。Java提供了多种排序算法,包括冒泡排序、选择排序、插入排序、快速排序等。下面是一个快速排序的示例代码:

public class QuickSort {
    public void sort(int[] arr, int low, int high) {
        if (low < high) {
            int pivot = partition(arr, low, high);
            sort(arr, low, pivot - 1);
            sort(arr, pivot + 1, high);
        }
    }

    public int partition(int[] arr, int low, int high) {
        int pivot = arr[high];
        int i = low - 1;
        for (int j = low; j < high; j++) {
            if (arr[j] < pivot) {
                i++;
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        int temp = arr[i + 1];
        arr[i + 1] = arr[high];
        arr[high] = temp;
        return i + 1;
    }
}

2. 查找算法

查找算法用于在给定数据集中查找特定元素的位置。Java提供了多种查找算法,包括线性查找、二分查找等。下面是一个二分查找的示例代码:

public class BinarySearch {
    public int search(int[] arr, int target) {
        int low = 0;
        int high = arr.length - 1;
        while (low <= high) {
            int mid = low + (high - low) / 2;
            if (arr[mid] == target) {
                return mid;
            } else if (arr[mid] < target) {
                low = mid + 1;
            } else {
                high = mid - 1;
            }
        }
        return -1;
    }
}

3. 图算法

图算法用于解决图结构相关的问题。Java提供了多种图算法,包括深度优先搜索、广度优先搜索、最短路径算法等。下面是一个深度优先搜索的示例代码:

import java.util.List;
import java.util.Stack;

public class DepthFirstSearch {
    public void dfs(Graph graph, int start) {
        boolean[] visited = new boolean[graph.getNumOfVertices()];
        Stack<Integer> stack = new Stack<>();
        stack.push(start);
        while (!stack.isEmpty()) {
            int vertex = stack.pop();
            if (!visited[vertex]) {
                visited[vertex] = true;
                System.out.print(vertex + " ");
                List<Integer> adjacentVertices = graph.getAdjacentVertices(vertex);
                for (int adjacentVertex : adjacentVertices) {
                    if (!visited[adjacentVertex]) {
                        stack.push(adjacentVertex);
                    }
                }
            }
        }
    }
}

4. 动态规划

动态规划是一种用于解决复杂问题的优化技术。Java中的动态规划算法可以用于解决背包问题、最长公共子序列等。下面是一个背包问题的示例代码:

public class Knapsack {
    public int knapsack(int[] weights, int[] values, int capacity) {
        int[][] dp = new int[weights.length + 1][capacity + 1];
        for (int i = 1; i <= weights.length; i++) {
            for (int j = 1; j <= capacity; j++) {
                if (weights[i - 1] <= j) {
                    dp[i][j] = Math.max(values[i - 1] + dp[i - 1][j - weights[i - 1]], dp[i - 1][j]);
                } else {
                    dp[i][j] = dp[i - 1][j];
                }
            }
        }
        return dp[weights.length][capacity];
    }
}

5. 贪心算法

贪心算法是一种以局部最优解为基础,逐步推导出全局最优解的算法。Java中的贪心算法可以用于解

标签:arr,java,十大,int,high,算法,Java,public
From: https://blog.51cto.com/u_16175441/6785451

相关文章

  • java如何生成订单号
    项目方案:Java生成订单号的实现1.引言在电商、餐饮、物流等行业中,生成唯一的订单号对于系统的稳定性和数据准确性非常重要。本文将介绍如何使用Java生成订单号,确保生成的订单号唯一、有序、可读性较高。2.方案实现2.1.基于时间戳的订单号一种常见的方式是基于时间戳生成订单......
  • java生成注释/*
    Java生成注释在Java开发中,注释是一种非常重要的编程元素。注释的作用是用于对代码进行说明、解释和文档化,提高代码的可读性和可维护性。在Java中,有三种主要的注释形式:单行注释(//)、多行注释(/*/)和文档注释(/**/)。本文将重点介绍如何使用Java生成注释,并提供一些示例代码。单行注释(/......
  • java字符串添加元素
    在Java中如何添加元素到字符串作为一名经验丰富的开发者,我将向你介绍如何在Java中添加元素到字符串。首先,让我们通过一个表格来展示整个过程的步骤。步骤代码描述1创建一个StringBuilder对象使用StringBuilder类来操作字符串,因为它可以动态地添加、删除和修改字符串......
  • java中log,info有锁吗
    Java中log.info有锁吗?在Java开发中,日志是一个非常重要的组件。通过记录系统运行信息,我们可以方便地跟踪和调试代码。在Java中,常用的日志框架有log4j、logback和java.util.logging等。本文将解答一个常见的问题:在Java中,log.info()方法是否有锁?log.info()方法简介在Java的日志框架......
  • java字符串如加减
    Java字符串的加减操作简介在Java编程中,字符串是一种常用的数据类型。它们可以用来存储和操作一系列的字符。Java中的字符串是不可变的,这意味着一旦创建,就不能被修改。本文将教你如何实现Java字符串的加减操作。步骤下面是实现Java字符串加减的基本步骤:步骤描述1创建......
  • java中list从大到小排序方法
    Java中List从大到小排序方法在Java中,List是一种常用的数据结构,可以存储一组有序的元素。有时候我们需要对List中的元素进行排序操作,常见的排序方式有从小到大和从大到小两种。本文将介绍如何使用Java中的Collections类和Comparator接口来实现List从大到小的排序。Collections类的......
  • java字符串截取第一位
    Java字符串截取第一位在Java中,字符串是一个非常重要的数据类型。我们经常需要对字符串进行各种操作,比如截取字符串的某个部分。本文将介绍如何使用Java代码来截取字符串的第一位。字符串的基本概念在Java中,字符串是一个由字符组成的序列。每个字符都有一个对应的索引,从0开始计数......
  • java中lambda两个集合不同的数据
    Java中Lambda两个集合不同的数据实现概述本文将指导刚入行的小白开发者如何使用Lambda表达式在Java中实现两个集合的差异数据。流程概览下面是实现的步骤概览:步骤描述1创建两个集合2使用Lambda表达式过滤出两个集合的差异数据3输出差异数据步骤详解1.......
  • java中float保留几位小数
    Java中float保留几位小数在Java编程中,经常会遇到需要保留浮点数的小数位数的情况。对于float类型的数据,在进行计算或输出时,我们可以通过一些方法来控制其小数部分的精度。本文将介绍在Java中如何保留特定位数的小数。在Java中,float是一种单精度浮点数数据类型,它可以表示大约7位有......
  • java字符串补齐空格
    Java字符串补齐空格在Java编程中,我们经常需要对字符串进行格式化处理。其中一个常见的需求是对字符串进行补齐空格操作,以使字符串在输出时保持对齐。本文将介绍在Java中如何补齐空格,并提供代码示例来说明。1.使用String.format方法补齐空格Java的String类提供了一个format方法,......