当前位置: 首页> 健康> 科研 > 大厂秋招面试真题:排序算法的稳定性?(微众银行真题)

大厂秋招面试真题:排序算法的稳定性?(微众银行真题)

时间:2025/7/29 11:43:01来源:https://blog.csdn.net/codenav/article/details/141897305 浏览次数:1次

大家好,我是鸭鸭!

此答案节选自鸭鸭最近弄的面试鸭,更多大厂常问面试题,可以🔍进行阅读哈!

回答重点

  • 稳定的排序算法:冒泡排序、插入排序、归并排序、计数排序。
  • 不稳定的排序算法:选择排序、快速排序、堆排序、希尔排序。

扩展知识

1)冒泡排序(Bubble Sort)

原理
冒泡排序是一种简单的排序算法。它通过多次遍历数组,依次比较相邻的两个元素,如果前者比后者大,就交换它们的位置。这样,最大的元素会像气泡一样逐渐"冒泡"到数组的末尾。这个过程会重复多次,直到没有元素需要交换。

时间复杂度

  • 最优时间复杂度:O(n) (当数组已排序时)
  • 平均时间复杂度:O(n²)
  • 最坏时间复杂度:O(n²)

空间复杂度

  • O(1) (原地排序)

特点

  • 稳定
  • 简单易懂,但效率较低,不适合大数据量的排序。

2)插入排序(Insertion Sort)

原理
插入排序通过构建有序序列,对于未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。类似于打牌时整理手中的牌。

时间复杂度

  • 最优时间复杂度:O(n) (当数组已排序时)
  • 平均时间复杂度:O(n²)
  • 最坏时间复杂度:O(n²)

空间复杂度

  • O(1) (原地排序)

特点

  • 稳定
  • 对于小规模数据或基本有序的数据,效率较高。

3)选择排序(Selection Sort)

原理
选择排序每次从未排序的序列中找到最小(或最大)的元素,放到已排序序列的末尾,直到所有元素排序完毕。

时间复杂度

  • 最优时间复杂度:O(n²)
  • 平均时间复杂度:O(n²)
  • 最坏时间复杂度:O(n²)

空间复杂度

  • O(1) (原地排序)

特点

  • 不稳定
  • 简单但效率低,通常不用于大规模数据排序。

4)快速排序(Quick Sort)

原理
快速排序是一种分治算法。通过选择一个"基准"元素,将数组分为两部分,一部分比基准小,一部分比基准大。然后对这两部分分别进行递归排序。

时间复杂度

  • 最优时间复杂度:O(n log n)
  • 平均时间复杂度:O(n log n)
  • 最坏时间复杂度:O(n²) (当选的基准值不合适时)

空间复杂度

  • O(log n) (递归栈的空间)

特点

  • 不稳定
  • 是实际应用中最常用的排序算法之一,性能通常较好。

5)归并排序(Merge Sort)

原理
归并排序是一种典型的分治算法。将数组分成两个子数组,对每个子数组分别排序,然后将排好序的子数组合并。

时间复杂度

  • 最优时间复杂度:O(n log n)
  • 平均时间复杂度:O(n log n)
  • 最坏时间复杂度:O(n log n)

空间复杂度

  • O(n) (需要额外的数组存放合并结果)

特点

  • 稳定
  • 适合处理大规模数据和链表排序,但空间开销较大。

6)堆排序(Heap Sort)

原理
堆排序利用堆这种数据结构来排序。先将数组构建成最大堆,然后将堆顶元素(最大值)与堆的最后一个元素交换,减小堆的范围,并重新调整堆,直到排序完成。

时间复杂度

  • 最优时间复杂度:O(n log n)
  • 平均时间复杂度:O(n log n)
  • 最坏时间复杂度:O(n log n)

空间复杂度

  • O(1) (原地排序)

特点

  • 不稳定
  • 在实际中较少单独使用,常用于一些需要优先队列的场景。

7)希尔排序(Shell Sort)

原理
希尔排序是插入排序的一种改进版。它通过设置一个初始的步长,将数组按步长分为多个子序列,对每个子序列进行插入排序,然后逐步缩小步长,直到步长为1。

时间复杂度

  • 最优时间复杂度:O(n log n)(根据步长序列的选择)
  • 平均时间复杂度:O(n log² n)
  • 最坏时间复杂度:O(n log² n)

空间复杂度

  • O(1) (原地排序)

特点

  • 不稳定
  • 相对简单,且在大多数实际情况下效率较高,但最坏情况难以分析。

8)计数排序(Counting Sort)

原理
计数排序适用于数据范围有限的情况。通过计数数组记录每个元素出现的次数,然后根据计数数组构建排好序的数组。

时间复杂度

  • 最优时间复杂度:O(n + k)
  • 平均时间复杂度:O(n + k)
  • 最坏时间复杂度:O(n + k) (k为数据范围)

空间复杂度

  • O(n + k) (需要额外的计数数组)

特点

  • 稳定
  • 非比较排序,适用于范围较小的整数排序,空间复杂度较高。

鸭鸭现在做的面试刷题神器面试鸭,已经6000题了!欢迎大家来刷题!

我是鸭鸭,我们下期见!

关键字:大厂秋招面试真题:排序算法的稳定性?(微众银行真题)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: