![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分治法
文章平均质量分 65
Java硬件工程师
中国科学技术大学毕业,原支付宝Java开发工程师,立志做一名资深全栈工程师
展开
-
程序设计与算法----分治之归并排序
算法思想数组排序任务可以如下完成:1)把前一半排序2)把后一半排序3)把两半归并到一个新的有序数组,然后再拷贝回原数组,排序完成。时间复杂度:o(nlogn),空间复杂度o(n)(在前一半的排序中,又用到了归并算法,一直再分,直到待排序数组只有一个元素,因此归并排序需要用到递归来实现)程序代码#include<iostream>using namespace std;#define MAXSIZE 10//归并排序需要额外的一个数组来存储中间结果 int a[100],b原创 2020-08-04 12:17:06 · 1679 阅读 · 0 评论 -
分治之快速排序以及快速排序为何最快
算法思想数组排序任务可以如下完成:1)设k=a[0],将k挪到适当位置,使得比k小的元素都在k的左边,比k大的元素都在k的右边,和k相等的,不关心在k左右出现均可(O(n)时间完成)2)把k左边的部分快速排序3)把k右边的部分快速排序(假设运气比较好,每次基准元素被移动到中间,这样的话时间复杂度为O(nlogn))如何在O(n)的时间内将数组分成两半,一般在小于基准值,一般大于基准值?程序代码#include<iostream>using namespace std;int原创 2020-08-05 10:22:33 · 2997 阅读 · 0 评论