21xrx.com
2024-09-17 03:47:48 Tuesday
登录
文章检索 我的文章 写文章
Java排序复杂度:解析常用排序算法的时间复杂度
2023-06-15 20:50:34 深夜i     --     --
Java排序 时间复杂度 冒泡排序 选择排序 插入排序

在Java中,常常需要对一组数据进行排序操作。不同的排序算法在时间复杂度和空间复杂度等方面有着不同的表现,因此选择适合自己场景的算法至关重要。

1.冒泡排序

冒泡排序是一种简单而显而易见的排序算法。它重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就交换位置。时间复杂度为O(n²)。

代码实现:

public static void bubbleSort(int[] array) {

  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 temp = array[j];

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

        array[j + 1] = temp;

      }

    }

  }

}

2.选择排序

选择排序是一种简单直观的排序算法。它的基本思想是:找到数组中最小的元素和第一个元素进行交换,然后在剩下的元素中继续这个过程。时间复杂度为O(n²)。

代码实现:

public static void selectSort(int[] array) {

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

    int minIndex = i;

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

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

        minIndex = j;

    }

    if (minIndex != i) {

      int temp = array[i];

      array[i] = array[minIndex];

      array[minIndex] = temp;

    }

  }

}

3.插入排序

插入排序是一种简单直观的排序算法。它的基本思想是:将待排序的元素插入到已经排好序的数组中,并保证插入后数组仍然有序。时间复杂度为O(n²)。

代码实现:

public static void insertSort(int[] array) {

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

    int temp = array[i];

    int j;

    for (j = i - 1; j >= 0 && array[j] > temp; j--) {

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

    }

    array[j + 1] = temp;

  }

}

综上所述,选择适合场景的排序算法是非常重要的,不仅能提高代码的效率,也能体现出程序员的能力。

  
  

评论区

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