《github一天一道算法题》:并归排序
看书、思考、写代码!
/******************************************** copyright@hustyangju* blog: http://blog.csdn.net/hustyangju* 2014-11-04* 题目:并归排序* 描写叙述:中分法递归分解一个区间的数组,再合并子区间,在合并时完毕排序* 解题思路:递归法。利用临界条件层层合并* 时间复杂度:O(n lgn)* 空间复杂度:O(n)* ******************************************/
#include <iostream>
#include <vector>
#include <algorithm>using namespace std;class merge_sort
{
public:merge_sort(int *p,int num):_p(p),_num(num){}~merge_sort(){}void print();void sort(int s,int e);
protected:void _merge(int s,int m,int e);
private:int *_p;int _num;
};void merge_sort::print()
{for(int i=0;i<_num;i++){cout<<_p[i]<<" ";// _p++; }cout<<endl;
}void merge_sort::sort(int s,int e)
{if(s<e){int m = int((s+e)/2);sort(s,m);sort(m+1,e);_merge(s,m,e);}
}void merge_sort::_merge(int s,int m,int e)
{int i=s;vector<int> vec;merge(_p+s,_p+m+1,_p+m+1,_p+e+1,back_inserter(vec));//merge合并的两个区间是前闭后开区间for(vector<int>::iterator it=vec.begin();it!=vec.end();it++){*(_p+i)=*it;i++;}}int main()
{int array[10]={2,6,66,7,1,88,9,20,11,54};cout<<"before:"<<endl;for(int i=0;i<10;i++)cout<<array[i]<<" ";cout<<endl;merge_sort mysort(array,10);// mysort.print();mysort.sort(0,9);cout<<"after:"<<endl;mysort.print();
}
《github一天一道算法题》:并归排序相关推荐
- 《github一天一道算法题》:分治法求数组最大连续子序列和
看书.思考.写代码. /**************************************** copyright@hustyangju * blog: http://blog.csdn.n ...
- 《github一天一道算法题》:插入排序
看书.思考.写代码! /*********************************************** * copyright@hustyangju * blog: http://bl ...
- 一天一道算法题--5.30---递归
感谢微信平台: 一天一道算法题 --------每天多一点进步--------- 今天 休假 这题 也很水 能发现 规律就好 明天 再也不能这样了 forgive me ---------- 转载于 ...
- 一天一道算法题--6.15--卡特兰数
感谢微信平台---一天一道算法题---每天多一点进步- problem: 12个高矮不同的人 排成两排 每排必须是从矮到高排列 而且第二行比对应的第一排的人高 问排列方式有多少种? analyse: ...
- 一道算法题跟大家分享
无意中看到一道算法题,拿出我的解法与大家分享. 题目:输出1,2,3,4四个数字能组成的互不相同且无重复的三位数并统计满足条件的三位数个数 大家先想想,再看答案吧. View Code 1 /// & ...
- 每天一道算法题系列十七之电话号码的字母组合
每天一道算法题系列: 来源:力扣(LeetCode) 本题链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-numb ...
- 搜狗2020秋招笔试的一道算法题
搜狗2020秋招的一道算法题 有A,B,C三种样品,凑齐三个样品各一个就可以领取一个奖品.任意两个样品可兑换另一种样品,如AA可兑换一个B或一个C,AB可兑换一个C.输入ABC,问最多可以领取多少奖品 ...
- 每天一道算法题系列十二之整数转罗马数字
每天一道算法题系列: 来源:力扣(LeetCode) 本题链接:https://leetcode-cn.com/problems/integer-to-roman/ 来源是力扣,大家喜欢可以去力扣中文 ...
- 截止目前为止,我遇到的最难的一道算法题:计算相邻两个数的最大差值
hello,今天给大家带来一道算法题.这道算法题,是我目前为止,见过最难的一道题.那么到底是怎样的一道算法题呢?如下: 题目:给定一个数组, 求如果排序之后, 相邻两数的最大差值. 要求时间复杂度O( ...
最新文章
- 普华永道重磅报告:决定未来的八大核心科技
- apache开启 gzip 压缩
- 将webstorm设置为eclipse风格
- 需要进一步学习和思考的速度问题
- uva 10627 - Infinite Race(数论)
- [云炬创业基础笔记]第六章商业模式测试7
- 30 个 Pandas技巧,加速你的数据分析处理速度!
- Oracle 10.2.0.1.0升级到 10.2.0.4.0
- 复制含有随机指针节点的链表
- Gambit 4.运行时选项
- SoapUI被动接口的压力测试/性能测试
- Asis CTF 2016 b00ks
- JavaScript立即执行函数
- PS 学习笔记 09-吸管工具组
- 计算机怎么设置搜索桌面,桌面百度:电脑上的直接搜索框,想搜就搜
- leetcode-004-0811. 硬币
- java进销存管理系统设计,基于JavaSwing进销存管理系统的设计与实现毕业论文+任务书+中期表+翻译及原文+答辩+源码+数据库+辅导视频...
- 如何切换中英文输入法及全角/半角?(原创)
- “商业创新者”的解答
- 淘宝店铺订单同步及解决方案