21xrx.com
2025-03-24 13:28:24 Monday
文章检索 我的文章 写文章
Java常见的排序方法
2023-06-15 16:34:49 深夜i     --     --
Java 排序算法 冒泡排序 快速排序 归并排序

作为一名Java开发者,我了解到排序算法是编程中必不可少的部分。随着我在Java编程中的不断成长,我学习了不同的排序算法,下面我来分享一些我觉得最常见的java排序方法。

1. 冒泡排序

冒泡排序是最简单的排序算法之一,适用于小数据量的排序。其基本思想是比较相邻的元素,如果前面的元素大于后面的当前元素,则交换之。这样一次冒泡会使得最大的元素“冒泡”到末尾。

下面是冒泡排序的Java实现:

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. 快速排序

快速排序是一种常见且高效的排序算法。它的核心思想是在序列中选择一个元素作为基准,将序列分成两部分,一部分的所有元素都小于基准,另一部分的所有元素都大于基准。然后对这两部分递归地进行排序,最终得到有序序列。

下面是快速排序的Java实现:

public static void quickSort(int[] arr, int left, int right) {
  if (left < right) {
    int pivotIndex = partition(arr, left, right);
    quickSort(arr, left, pivotIndex - 1);
    quickSort(arr, pivotIndex + 1, right);
  }
}
public static int partition(int[] arr, int left, int right) {
  int pivot = arr[right];
  int i = left - 1;
  for (int j = left; j < right; 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[right];
  arr[right] = temp;
  return i + 1;
}

3. 归并排序

归并排序是一种常见的排序算法,它的核心思想是将待排序序列分成两部分,对每部分分别进行排序,最后再将已排序的两部分合并成一个有序序列。归并排序需要使用到递归来实现,因此它的代码实现比较简洁。

下面是归并排序的Java实现:

public static void mergeSort(int[] arr, int left, int right) {
  if (left < right) {
    int mid = (left + right) / 2;
    mergeSort(arr, left, mid);
    mergeSort(arr, mid + 1, right);
    merge(arr, left, mid, right);
  }
}
public static void merge(int[] arr, int left, int mid, int right) {
  int[] temp = new int[right - left + 1];
  int i = left, j = mid + 1, k = 0;
  while (i <= mid && j <= right) {
    if (arr[i] <= arr[j]) {
      temp[k++] = arr[i++];
    } else {
      temp[k++] = arr[j++];
    }
  }
  while (i <= mid) {
    temp[k++] = arr[i++];
  }
  while (j <= right) {
    temp[k++] = arr[j++];
  }
  for (int m = 0; m < temp.length; m++) {
    arr[left + m] = temp[m];
  }
}

总之,这些排序算法都是Java中比较常见的排序方法。在实际工作中,我们需要根据数据量和性能要求等因素来选择合适的排序算法,从而达到目的。希望这篇文章能够帮助到您。

  
  

评论区