21xrx.com
2025-03-17 12:55:31 Monday
文章检索 我的文章 写文章
我最近面试了一些Java开发的岗位
2023-06-11 04:13:57 深夜i     8     0
排序算法 Java 面试题

我最近面试了一些Java开发的岗位,发现常见的面试题之一就是排序算法。所以在这里,我想分享一下我对Java排序算法的一些总结,并提供一些常见的代码例子。

常见的Java排序算法有以下几种:

1.冒泡排序:

冒泡排序是一种稳定的排序算法。它的基本思想是重复地遍历要排序的数组,比较相邻的元素,根据大小关系交换位置,直到不再需要交换为止。

下面是Java代码实现:

public static void bubbleSort(int[] array) {
  int n = array.length;
  for (int i = n - 1; i > 0; i--) {
    for (int j = 0; j < i; j++) {
      if (array[j] > array[j+1]) {
        int tmp = array[j];
        array[j] = array[j+1];
        array[j+1] = tmp;
      }
    }
  }
}

2.插入排序:

插入排序也是一种稳定的排序算法。它的基本思想是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。

下面是Java代码实现:

public static void insertSort(int[] array) {
  int n = array.length;
  for (int i = 1; i < n; i++) {
    int j = i;
    int target = array[i];
    while (j > 0 && target < array[j-1]) {
      array[j] = array[j-1];
      j--;
    }
    array[j] = target;
  }
}

3.快速排序:

快速排序是一种常用的排序算法。它的基本思想是通过一趟排序将待排序的数据分割成两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

下面是Java代码实现:

public static void quickSort(int[] array, int left, int right) {
  if (left < right) {
    int pivotIndex = partition(array, left, right);
    quickSort(array, left, pivotIndex - 1);
    quickSort(array, pivotIndex + 1, right);
  }
}
public static int partition(int[] array, int left, int right) {
  int pivot = array[right];
  int i = left - 1;
  for (int j = left; j < right; j++) {
    if (array[j] < pivot) {
      i++;
      int tmp = array[i];
      array[i] = array[j];
      array[j] = tmp;
    }
  }
  int tmp = array[i+1];
  array[i+1] = array[right];
  array[right] = tmp;
  return i+1;
}

在面试过程中,除了熟练掌握排序算法的原理和实现,我们还需要了解排序算法的时间复杂度和稳定性等性质。

总结:在Java开发的面试中,排序算法是常见的考点之一。熟练掌握并实现常见的排序算法,并了解它们的时间复杂度和稳定性等性质,可以提高我们的面试成功率。

  
  

评论区