21xrx.com
2024-05-20 15:46:21 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中比较常见的排序方法。在实际工作中,我们需要根据数据量和性能要求等因素来选择合适的排序算法,从而达到目的。希望这篇文章能够帮助到您。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复