Java 中的排序算法有多种实现方式。以下是几种常见的排序算法及其实现方式,包括步骤流程、示例代码以及可能的第三方库依赖。
冒泡排序是一种简单的比较排序算法,它依次比较相邻的元素并交换它们,直到整个数组按照升序(或降序)排列。
步骤流程:
示例代码:
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));
}
}
冒泡排序是一个基础的排序算法,一般不需要额外的第三方库依赖。
插入排序是一种简单直观的排序算法,它将数组分为已排序和未排序两部分,逐步将未排序元素插入到已排序部分的正确位置。
步骤流程:
示例代码:
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 = {12, 11, 13, 5, 6};
insertionSort(arr);
System.out.println("Sorted array: " + Arrays.toString(arr));
}
}
插入排序也是一个基础的排序算法,一般不需要额外的第三方库依赖。
快速排序是一种高效的分治排序算法,通过选择一个基准元素,将数组划分为小于基准的部分和大于基准的部分,然后递归地对两部分进行排序。
步骤流程:
示例代码:
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivotIndex = partition(arr, low, high);
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, high);
}
}
public static 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;
}
public static void main(String[] args) {
int[] arr = {10, 7, 8, 9, 1, 5};
int n = arr.length;
quickSort(arr, 0, n - 1);
System.out.println("Sorted array: " + Arrays.toString(arr));
}
}
快速排序也是一个常见的排序算法,一般不需要额外的第三方库依赖。
上述示例代码中的排序算法都不需要使用第三方库。这些算法是基础的排序算法,有助于理解排序的基本原理。对于实际项目中,Java 已经提供了内置的排序方法 Arrays.sort()
和 Collections.sort()
,它们使用了优化后的排序算法(如归并排序和 TimSort),一般情况下建议使用这些内置方法来进行排序。
如果你想要使用第三方库来进行排序,常见的排序库包括 Apache Commons Lang 的 ArrayUtils
和 Google Guava 库。下面是示例依赖坐标:
<!-- 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'
<!-- Maven -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
// Gradle
implementation 'com.google.guava:guava:30.1.1-jre'
这些库提供了更多的工具函数和数据结构,其中包括排序方法。例如,Guava 中的 com.google.common.primitives.Ints
类提供了对原始整型数组的排序方法。具体使用方法可以参考它们的官方文档或示例代码。