归并排序_分治算法 (白书P226)
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[100],ans[100];
void merge_sort(int x,int y)
{
if(y-x>1) {
int mid=x+(y-x)/2;
merge_sort(x,mid);
merge_sort(mid,y);
int i=x,j=mid;
int n=mid,m=y,k=0;
while(i<n&&j<m) {
if(a[i]<a[j]) ans[k++]=a[i++];
else ans[k++]=a[j++];
}
while(i<n) ans[k++]=a[i++];
while(j<m) ans[k++]=a[j++];
for(i=0;i<k;i++) a[x+i]=ans[i];
}
} int main()
{
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++) cin>>a[i];
merge_sort(0,n);
for(i=0;i<n;i++) cout<<a[i]<<" ";
cout<<endl;
}
归并排序_分治算法 (白书P226)的更多相关文章
- 选拔赛 hash 字符串匹配 哈希算法(白书p374)
hash Description dr所在国度的有个奇怪的规定:他们的字母不是a~z,而是用1~1000表示. 利用这个奇怪的规定,dr想出了一个好玩的游戏:首先给出n个字符串(当然每个字符用1~ ...
- 从分治算法到 Hadoop MapReduce
从分治算法说起 要说 Hadoop MapReduce 就不得不说分治算法,而分治算法其实说白了,就是四个字 分而治之 .其实就是将一个复杂的问题分解成多组相同或类似的子问题,对这些子问题再分,然后再 ...
- 剑指Offer——分治算法
剑指Offer--分治算法 基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更 ...
- LeetCode 分治算法
分治算法:是将问题划分为一些独立的子问题,递归的求解个子问题,然后合并子问题的解而得到原问题的解. 分治算法步骤 step1 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题: ...
- 递归 & 分治算法深度理解
首先简单阐述一下递归,分治算法,动态规划,贪心算法这几个东西的区别和联系,心里有个印象就好. 递归是一种编程技巧,一种解决问题的思维方式:分治算法和动态规划很大程度上是递归思想基础上的(虽然实现动态规 ...
- 当我们谈论算法我们在谈论什么:由疫情核酸检测想到的分治算法(Divide-and-Conquer)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_159 北京的疫情一波未平一波又起,由此看来,战"疫"将是一场旷日持久的战争,绝不能掉以轻心.轻易言胜.病毒随时 ...
- 从两个平方算法到分治算法-java
先来看看问题的来源,假设有这么一个数组: 1 2 -5 4 -2 3 -3 4 -15 我们要求出其中连续字数组的和的最大值 例如这么可以很明显看出 4+ –2 + 3 + –3 + 4 = 6 所有 ...
- 计算几何 平面最近点对 nlogn分治算法 求平面中距离最近的两点
平面最近点对,即平面中距离最近的两点 分治算法: int SOLVE(int left,int right)//求解点集中区间[left,right]中的最近点对 { double ans; //an ...
- 白书P61 - 点集配对问题
白书P61 - 点集配对问题 状压DP #include <iostream> #include <cstdio> #include <cstring> using ...
随机推荐
- Apache Bench测试
- 压力测试神器 Siege - Locust Web测压工具python开源 - 介绍: ab是apachebench命令的缩写. ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某 ...
- 【DNN 系列】 DNN是什么
DNN平台 这个DNN平台是一个开放的.可扩展的.安全的.可扩展的内容管理系统和ASP.NET.世界各地的数十万商户,从地方小企业到全球1000强企业,取决于DNN平台作为他们网站的编辑环境. 这个网 ...
- PostgreSQL Replication之第九章 与pgpool一起工作(2)
9.2 理解pgpool的功能 pgpool提供了如下功能: •连接池 •语句级别的复制 •负载均衡 •限制连接 •内存缓存 •并行查询 [当决定使用那些功能的时候,记住并非所有的功能可以在同一时间使 ...
- 《剑指offer》二叉树的镜像
一.题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 二.输入描述 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 三.输出描述 镜像二叉树 8 / \ 10 ...
- redhat赋予普通用户root权限
方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉 ## Allows people in group wheel to run all commands%wheel ...
- UNIX 是什么?怎么诞生的?
要记住, 当一扇门在你面前关闭的时候, 另一扇门就会打开. 肯·汤普森(Ken Thompson) 和丹尼斯·里奇(Dennis Richie)两个人就是这句名言很好的实例.他们俩是20世纪最优秀的信 ...
- SCO Openserver、SCO Unix、SCO UnixWare、Solaris几者到底是什么关系,有什么相同或不同?
Unix操作系统的历史漫长而曲折,它的第一个版本是1969年由Ken Thompson在AT&T贝尔实验室实现的,运行在一台DEC PDP-7计算机上.这个系统非常粗糙,与现代Unix相差很远 ...
- Nginx的日志管理
vim /usr/local/nginx/conf/nginx.conf #编辑 nginx 配置文件 server{ ...
- 编码问题异常处理:UnicodeDecodeError: 'gbk' codec can't...
作为编码问题集合: 2)UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbd in position 0: invalid start by ...
- 题解 P3372 【【模板】线段树 1】(珂朵莉树解法)
这道题可以用珂朵莉树做,但是由于数据比较不随机,而我也没有手写一颗平衡树,所以就被卡掉了,只拿了70分. 珂朵莉树是一种基于平衡树的(伪)高效数据结构. 它的核心操作是推平一段区间. 简而言之,就是把 ...