网站建设维护及使用管理办法,许昌市住房建设局网站,网站从建设到运行要多少钱,wordpress网站做app回归面试题#xff01;
回答重点 稳定的排序算法#xff1a;冒泡排序、插入排序、归并排序、计数排序。 不稳定的排序算法#xff1a;选择排序、快速排序、堆排序、希尔排序。
扩展知识
1#xff09;冒泡排序#xff08;Bubble Sort#xff09;
原理#xff1a; 冒…回归面试题
回答重点 稳定的排序算法冒泡排序、插入排序、归并排序、计数排序。 不稳定的排序算法选择排序、快速排序、堆排序、希尔排序。
扩展知识
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) 需要额外的计数数组
特点 稳定 非比较排序适用于范围较小的整数排序空间复杂度较高。
福利
私聊作者或者添加下方联系领取Java高频面试集pdf