21xrx.com
2024-12-23 00:01:37 Monday
登录
文章检索 我的文章 写文章
作为一名Java程序员
2023-06-11 21:31:38 深夜i     --     --
冒泡排序 相邻元素 交换

作为一名Java程序员,排序算法一定是我的基础知识之一。今天,我就来介绍Java中常见的几种排序方法。

第一种:冒泡排序

冒泡排序的思想是比较相邻的元素,如果顺序错误就交换它们。代码实现如下:


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

      }

    }

  }

}

第二种:选择排序

选择排序的思想是首先找到序列中最小的元素,将其放在第一位,然后找到第二小的元素放在第二位……以此类推。代码实现如下:


public void selectionSort(int[] arr) {

  int n = arr.length;

  for (int i = 0; i < n - 1; i++) {

    int minIndex = i;

    for (int j = i + 1; j < n; j++) {

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

        minIndex = j;

      

    }

    if (minIndex != i) {

      int temp = arr[i];

      arr[i] = arr[minIndex];

      arr[minIndex] = temp;

    }

  }

}

关键词:选择排序、最小元素、交换

第三种:快速排序

快速排序的思想是首先选定一个基准元素,将序列中小于基准元素的元素放在基准元素的左边,大于基准元素的元素放在右边。然后递归地对左右两边的子序列做相同的操作。代码实现如下:


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

  }

}

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

}

关键词:快速排序、基准元素、递归

总结

以上就是Java排序的几种方法,它们分别是冒泡排序、选择排序和快速排序。对于大多数情况下,我们应该首选快速排序,因为它的效率最高,时间复杂度为O(nlogn)。

  
  

评论区

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