现有待排序序列{25,84,21,47,15,27,68,35,20},请写出利用归并排序进行排序的过程。
时间: 2024-05-20 20:14:40 浏览: 7
归并排序是一种经典的排序算法,主要思想是将原始序列划分成若干个子序列,然后对子序列进行排序,最后再将子序列合并成一个有序序列。
对于给定的序列{25,84,21,47,15,27,68,35,20},下面是利用归并排序进行排序的过程:
1. 将序列划分成两个子序列{25,84,21,47,15}和{27,68,35,20}。
2. 对两个子序列分别进行排序,得到{15,21,25,47,84}和{20,27,35,68}。
3. 将两个有序子序列合并成一个有序序列,得到{15,20,21,25,27,35,47,68,84}。
这样,我们就得到了给定序列的有序排列。总的时间复杂度是O(nlogn),其中n是序列的长度。
相关问题
现有待排序序列{25,84,21,47,15,27,68,35,20},请写出利用堆排序进行排序的过程。
堆排序的基本思想是将待排序序列构建成一个大根堆或小根堆,然后依次取出堆顶元素并重新调整堆,最终得到有序序列。
下面是利用堆排序进行排序的过程:
1. 构建大根堆
将待排序序列构建成大根堆,即每个节点的值都大于其左右子节点的值。从最后一个非叶子节点开始,依次向前调整,保证每个节点都满足堆的性质。
调整前:{25,84,21,47,15,27,68,35,20}
首先从最后一个非叶子节点68开始,调整以68为根节点的子树:
68
/ \
35 27
/ \ / \
25 21 47 15
/ \
84 20
调整后:
68
/ \
35 47
/ \ / \
25 21 27 15
/ \
84 20
再调整以35为根节点的子树:
68
/ \
47 35
/ \ / \
25 21 27 15
/ \
84 20
再调整以25为根节点的子树:
68
/ \
47 35
/ \ / \
84 21 27 15
/ \
25 20
再调整以47为根节点的子树:
84
/ \
47 35
/ \ / \
68 21 27 15
/ \
25 20
调整前半部分结束,继续调整后半部分:
84
/ \
68 35
/ \ / \
47 21 27 15
/ \
25 20
最终得到大根堆:{84,68,35,47,21,27,25,15,20}
2. 排序
取出堆顶元素84,将其放到有序序列的末尾,然后重新调整堆,得到新的大根堆{68,47,35,25,21,27,20,15}。
重复上述过程,直到堆为空。
排序过程:
第一次取出堆顶元素84,得到新的大根堆{68,47,35,25,21,27,20,15},有序序列为{84}。
第二次取出堆顶元素68,得到新的大根堆{47,35,27,25,21,20,15},有序序列为{84,68}。
第三次取出堆顶元素47,得到新的大根堆{35,25,27,15,21,20},有序序列为{84,68,47}。
第四次取出堆顶元素35,得到新的大根堆{27,25,20,15,21},有序序列为{84,68,47,35}。
第五次取出堆顶元素27,得到新的大根堆{25,21,20,15},有序序列为{84,68,47,35,27}。
第六次取出堆顶元素25,得到新的大根堆{21,15,20},有序序列为{84,68,47,35,27,25}。
第七次取出堆顶元素21,得到新的大根堆{20,15},有序序列为{84,68,47,35,27,25,21}。
第八次取出堆顶元素20,得到新的大根堆{15},有序序列为{84,68,47,35,27,25,21,20}。
第九次取出堆顶元素15,得到新的大根堆{},有序序列为{84,68,47,35,27,25,21,20,15}。
最终得到有序序列:{15,20,21,25,27,35,47,68,84}。
现有待排序序列{25,84,21,47,15,27,68,35,20},请写出利用快速排序进行排序的过程。
快速排序是一种高效的排序算法,其基本思路是选取一个基准元素(pivot),将序列分为左右两部分,左边部分的元素都小于等于基准元素,右边部分的元素都大于等于基准元素,然后对左右两部分分别递归地进行快速排序。
以给定序列{25,84,21,47,15,27,68,35,20}为例,我们可以选择第一个元素25作为基准元素。
1. 第一轮快排:
选择25作为基准元素,将序列分为左右两部分:
左边部分:{21,15,20}
右边部分:{84,47,27,68,35}
进行分区操作后,序列变为:{21,15,20,25,84,47,27,68,35}
2. 第二轮快排:
对左边部分{21,15,20}进行快速排序,选择21作为基准元素。
左边部分:{15}
右边部分:{20,21}
进行分区操作后,序列变为:{15,20,21,25,84,47,27,68,35}
3. 第三轮快排:
对右边部分{84,47,27,68,35}进行快速排序,选择84作为基准元素。
左边部分:{47,27,68,35}
右边部分:{}
进行分区操作后,序列变为:{15,20,21,25,35,47,27,68,84}
4. 第四轮快排:
对左边部分{47,27,68,35}进行快速排序,选择47作为基准元素。
左边部分:{27,35}
右边部分:{68}
进行分区操作后,序列变为:{15,20,21,25,35,27,47,68,84}
5. 第五轮快排:
对左边部分{27,35}进行快速排序,选择27作为基准元素。
左边部分:{}
右边部分:{35}
进行分区操作后,序列变为:{15,20,21,25,27,35,47,68,84}
快速排序完成,序列已经按照从小到大的顺序排好。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)