21xrx.com
2024-12-23 00:24:33 Monday
登录
文章检索 我的文章 写文章
Java排序:介绍常用的排序算法
2023-06-16 21:26:01 深夜i     --     --
Java排序 排序算法 冒泡排序 快速排序 选择排序

排序是算法领域中比较基础和重要的部分,Java作为一门面向对象的编程语言,提供了很多基于对象的排序方式,如Collections.sort()、Arrays.sort()等。除此之外,Java还支持经典的排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。本文将对这些排序算法进行简单的介绍和代码实现。

1. 冒泡排序

冒泡排序是最简单的排序算法之一,它的思路是每次从待排序元素中选出最大的一个,放到已排序序列的最后。具体流程如下:


public static void bubbleSort(int[] arr) {

  if (arr == null || arr.length < 2) return;

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

    for (int j = 0; j < i; j++) {

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

        swap(arr, j, j+1);

      }

    }

  }

}

2. 快速排序

快速排序是一种分治的算法,它的基本思路是将一个数组分成两个子数组,然后递归地对子数组进行排序。具体流程如下:


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

  if (left < right) {

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

    quickSort(arr, left, index - 1);

    quickSort(arr, index + 1, right);

  }

}

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

      swap(arr, i, j);

    }

  }

  swap(arr, i+1, right);

  return i+1;

}

3. 选择排序

选择排序每次找出未排序序列中的最小值,放到已排序序列的末尾,直到所有元素都排序完毕。具体流程如下:


public static void selectionSort(int[] arr) {

  if (arr == null || arr.length < 2) return;

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

    int minIndex = i;

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

      if (arr[j] < arr[minIndex])

        minIndex = j;

      

    }

    if (minIndex != i) {

      swap(arr, i, minIndex);

    }

  }

}

以上是对Java常用的几种排序算法的简要介绍,读者可以根据自己的需求选择合适的排序算法。同时,我们也需要注意排序算法的时间复杂度,尽量避免使用时间复杂度较高的算法。

  
  

评论区

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