21xrx.com
2024-11-05 19:34:34 Tuesday
登录
文章检索 我的文章 写文章
Java排序:冒泡、选择和插入排序的比较分析
2023-06-15 08:16:39 深夜i     --     --
Java排序 冒泡排序 选择排序 插入排序

排序是计算机科学中最基础、最重要的算法之一,而在实际生产生活中,排序也是非常常见的。相信很多Java程序员在工作中多多少少都会用到一些排序算法,本文就将针对Java中常用的冒泡排序、选择排序和插入排序三种算法,分别进行比较和分析。

## 冒泡排序

冒泡排序是以交换的方式进行排序,其思路是从第一个元素开始,依次比较相邻两个元素,如果顺序不对就进行交换,直到排序完成。看下面这段Java代码:


public static void bubbleSort(int[] array) {

  if (array == null || array.length == 0) return;

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

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

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

        int tmp = array[j];

        array[j] = array[j + 1];

        array[j + 1] = tmp;

      }

    }

  }

}

## 选择排序

选择排序是先从原数组中找到最小的元素,并将其放到数组的最前面,接着从剩下的元素中找到次小的元素,依次类推。看下面这段Java代码:


public static void selectionSort(int[] array) {

  if (array == null || array.length == 0) return;

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

    int minIdx = i;

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

      if (array[j] < array[minIdx])

        minIdx = j;

      

    }

    if (i != minIdx) {

      int tmp = array[minIdx];

      array[minIdx] = array[i];

      array[i] = tmp;

    }

  }

}

## 插入排序

插入排序是对于未排序的每一个元素,从已排序的最后一个元素开始依次对比,如果当前元素比已排序的元素小,则将该元素插入到适当的位置。看下面这段Java代码:


public static void insertionSort(int[] array) {

  if (array == null || array.length == 0) return;

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

    int cur = array[i];

    int j = i - 1;

    while (j >= 0 && array[j] > cur) {

      array[j + 1] = array[j];

      j--;

    }

    array[j + 1] = cur;

  }

}

## 总结

冒泡、选择、插入排序都是基于比较的排序方法,它们的时间复杂度均为O(n^2),因此对于数据量大的情况下效率会很低。当然在实际业务中,还有很多其他的排序算法可以使用,本文并没有对其进行讨论。

  
  

评论区

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