21xrx.com
2024-11-22 12:37:32 Friday
登录
文章检索 我的文章 写文章
我分享一下Java的几种排序算法及其代码
2023-06-17 02:25:35 深夜i     --     --
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) return;

  int i = left, j = right, base = arr[left];

  while (i < j) {

    while (i < j && arr[j] >= base) j--;

    while (i < j && arr[i] <= base) i++;

    if (i < j) {

      int temp = arr[i];

      arr[i] = arr[j];

      arr[j] = temp;

    }

  }

  arr[left] = arr[i];

  arr[i] = base;

  quickSort(arr, left, i - 1);

  quickSort(arr, i + 1, right);

}

### 3. 归并排序

归并排序分治策略的典型应用,它的核心思路是将待排记录序列拆分成两个子序列,对这两个子序列分别进行排序,最后将两个排序好的子序列合并成一个有序序列。以下是Java代码实现:


public static void mergeSort(int[] arr, int left, int right) {

  if (left >= right) return;

  int mid = (left + right) / 2;

  mergeSort(arr, left, mid);

  mergeSort(arr, mid + 1, 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++];

  System.arraycopy(temp, 0, arr, left, temp.length);

}

以上就是我给大家分享的几种Java排序算法及其代码实现,希望对大家有所帮助。如果你有更好的实现方法或者更好的建议,欢迎在评论区留言。

  
  

评论区

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