给定以下7个问题 起泡排序、归并排序、快速排序、堆排序、选择问题、假币问题、两个序列的中位数的例题讲解
时间: 2023-06-10 09:05:07 浏览: 89
好的,我理解了你的问题。以下是7个问题的例题讲解:
1. 起泡排序:给定一个无序的数列,通过不断的将相邻的两个数比较大小并交换位置,进行多轮遍历,将最大的数慢慢地冒泡到最后的位置,最终实现整个数列的排序。
2. 归并排序:将一个无序的数列拆分成若干个较小的子序列,对子序列进行排序,然后将子序列合并起来,不断地执行这个过程,最终实现整个数列的排序。
3. 快速排序:通过选定一个数据作为“枢轴”(pivot),将数列中小于枢轴的数移到左侧,大于枢轴的数移到右侧,然后对左右两侧的子序列重复以上过程,最终实现整个数列的排序。
4. 堆排序:将数列组成一个堆,堆中节点的大小满足一定的规律,比如大根堆中父节点的值大于子节点的值。然后将堆的根节点取出,放到新的数列中,再将剩下的节点重新构造成一个堆,不断执行以上过程,最终实现整个数列的排序。
5. 选择问题:从一个无序的数列中选出第k大(或第k小)的数。可以采用快速排序的思路,不断选取一个数作为枢轴,将数列分成左右两个子序列,判断k是否在左侧或右侧子序列中,然后递归执行以上过程,最终找到第k大的数。
6. 假币问题:有12枚硬币,其中有一枚假币,和其他硬币重量不一样,但是不知道它比其他硬币轻还是重。给你一个天平,最少需要称几次,才能找到这个假币并确定它轻或重?
这个问题需要采用二分法的思路,将硬币组成三组,分别放在天平两侧和中间。比较两侧的重量,如果相等,则说明假币在中间;若不相等,则说明假币在较轻的那一侧。然后再把较轻的那组硬币继续拆分成三组进行比较,最终找到假币并确定它的重量。
7. 两个序列的中位数:给定两个等长的序列,找出它们的中位数。可以把这两个序列合并成一个序列,然后再找出这个新序列的中位数。如果这两个序列的长度分别为m和n,那么时间复杂度为O(m+n)。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)