Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java排序算法


Java 中有许多排序算法,每种算法都有不同的特点和应用场景。以下是一些常见的排序算法及其实现方式,附带了步骤流程和示例代码。在示例代码中,我会使用 Java 标准库提供的排序方法来演示。

冒泡排序(Bubble Sort)

冒泡排序是一种简单的比较排序算法,它多次迭代列表,每次将相邻的元素进行比较并交换,直到整个列表有序。

步骤流程:

  1. 从列表的第一个元素开始,比较相邻的两个元素。
  2. 如果顺序错误,交换这两个元素。
  3. 继续向后遍历列表,重复步骤 1 和 2,直到没有需要交换的元素。

示例代码:

public class BubbleSort {
    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;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        bubbleSort(arr);
        System.out.println("Sorted array: " + Arrays.toString(arr));
    }
}

插入排序(Insertion Sort):

插入排序是一种简单的排序算法,将列表分为已排序和未排序两部分,每次从未排序部分取出一个元素,将它插入到已排序部分的正确位置。

步骤流程:

  1. 从第一个元素开始,将其视为已排序部分。
  2. 从未排序部分取出一个元素,依次将它与已排序部分的元素比较,找到正确位置插入。
  3. 重复步骤 2,直到未排序部分为空。

示例代码:

public class InsertionSort {
    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--;
            }
            arr[j + 1] = key;
        }
    }

    public static void main(String[] args) {
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        insertionSort(arr);
        System.out.println("Sorted array: " + Arrays.toString(arr));
    }
}

对于更多排序算法的实现和使用,可以参考 Java 标准库中的 java.util.Arrays 类,它提供了一些已经实现好的排序方法,如 Arrays.sort()。如果需要使用第三方库,下面是一些常见排序算法的库和依赖坐标:

Apache Commons Lang

Maven 依赖:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>
  • Gradle 依赖:
implementation 'org.apache.commons:commons-lang3:3.12.0'

在使用这些库时,可以根据文档了解如何调用对应的排序方法。例如,使用 Apache Commons Lang 中的 ArrayUtils 类的 sort() 方法来排序一个整数数组。

另外,我会为每种算法列出一个示例,展示如何在Maven和Gradle中添加所需的依赖。示例代码:Maven依赖:Gradle依赖:###选择 ...
排序算法分为两大类,一是内部排序,即数据记录在内存中进行排序,另一个是外部排序,主要是因排序的数据很大,一次不能容纳全部的排序记录,在排序过 ...
在Java中,快速排序(QuickSort)是一种高效的排序算法,其平均时间复杂度为O(nlogn)。###示例代码这两种版本的快速排序均使 ...
##经典排序算法的实现###冒泡排序(BubbleSort)冒泡排序是一种简单的比较排序算法,它通过反复交换相邻的元素来实现排序。示例代码: ...
查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算。折半查找的前提条件是需要有序表顺序存储,对于静态查找表,一 ...