21xrx.com
2024-11-08 22:09:26 Friday
登录
文章检索 我的文章 写文章
我最近面试了一些Java开发的岗位
2023-06-11 04:13:57 深夜i     --     --
排序算法 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开发的面试中,排序算法是常见的考点之一。熟练掌握并实现常见的排序算法,并了解它们的时间复杂度和稳定性等性质,可以提高我们的面试成功率。

  
  

评论区

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