21xrx.com
2024-11-05 19:42:59 Tuesday
登录
文章检索 我的文章 写文章
Java常用的排序算法
2023-06-14 22:18:13 深夜i     --     --
冒泡排序 相邻元素 排序算法

作为一名Java开发者,我们经常需要使用到排序算法来处理各种数据集合。在Java中,提供了多种排序算法工具类,可以方便地对数组或集合进行排序。

下面我就来介绍一下Java常用的几种排序算法。

1. 冒泡排序

冒泡排序是最基本的排序算法,其原理是比较相邻的元素。如果第一个比第二个大,就交换它们两个。对每一对相邻元素进行比较,最终将最大的元素“浮”到数组的末尾,重复这个步骤,直到整个数组排序完成。

代码示例:


public static void bubbleSort(int[] arr) {

  int temp;

  for (int i = 0; i < arr.length - 1; i++) {

    for (int j = 0; j < arr.length - 1 - i; j++) {

      if (arr[j] > arr[j + 1]) {

        temp = arr[j];

        arr[j] = arr[j + 1];

        arr[j + 1] = temp;

      }

    }

  }

}

2. 快速排序

快速排序是一种常用的排序算法,其核心思想是基于分治法,在数据集合中选择一个基准点,将数据集合划分成两部分,一部分小于基准点,一部分大于基准点。然后对这两个部分再分别进行快速排序,最终得到有序数据集合。

代码示例:


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

  if (left < right) {

    int p = partition(arr, left, right);

    quickSort(arr, left, p - 1);

    quickSort(arr, p + 1, right);

  }

}

private static int partition(int[] arr, int left, int right) {

  int pivot = arr[left];

  while (left < right) {

    while (left < right && arr[right] >= pivot)

      right--;

    

    arr[left] = arr[right];

    while (left < right && arr[left] <= pivot) {

      left++;

    }

    arr[right] = arr[left];

  }

  arr[left] = pivot;

  return left;

}

关键词:快速排序、分治法、基准点

3. 归并排序

归并排序是一种用于将已排序的数组合并成一个更大的已排序数组的排序算法。该算法将待排序数组不断拆分为较小的子数组,直到每个子数组都有序,然后通过将有序的子数组合并,最终得到整个数组有序。

代码示例:


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);

  }

}

private 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++];

  }

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

}

关键词:归并排序、子数组、合并

总结

通过上述介绍,我们可以看出Java中提供了多种常用的排序算法,包括冒泡排序、快速排序、归并排序等。根据不同的数据集合大小和排序要求,我们可以选择不同的算法。在日常开发中,了解这些排序算法的原理和实现方式,可以提高我们的编程能力和代码质量。

  
  

评论区

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