c++ 归并排序
c++ 归并排序
输入输出格式
输入格式:
第11行为一个正整数NN,第22行包含NN个空格隔开的正整数a_ia
i
,为你需要进行排序的数,数据保证了A_iA
i
不超过10000000001000000000。
输出格式:
将给定的NN个数从小到大输出,数之间空格隔开,行末换行且无空格。
输入输出样例
输入样例#1:
8
10 4 6 3 8 2 5 7
输出样例#1:
2 3 4 5 6 7 8 10
代码及注释
#include <bits/stdc++.h>
using namespace std;
int a[100];
int r[100];
void Sort(int L,int R)
{
if (L == R)//如果只有一个元素
return ;//退出
else
{
int mid = (L + R) / 2;//计算出中间值
Sort(L,mid);//拆分mid前面的
Sort(mid + 1,R);//拆分mid后面的
/***************对左右两个有序数组合并****************************/
int k = L;
int i = L;
int j = mid + 1;
while (i <= mid && j <= R)//进行逐个遍历
{
if (a[i] <= a[j])//如果左边比右边大
{
r[k] = a[i];//把小的排在前面
k ++;
i ++;
}
else//如果右边比左边大
{
r[k] = a[j];//把小的排在前面
k ++;
j ++;
}
}
while (i <= mid)//如果还有剩余,就直接复制到r[]
{
r[k] = a[i];
i ++;
k ++;
}
while (j <= R)//如果还有剩余,就直接复制到r[]
{
r[k] = a[j];
j ++;
k ++;
}
for (int i = 1;i <= R;i ++)//把r[]全部赋值给a[]
{
a[i] = r[i];
}
}
}
int main()
{
int n;
cin >> n;
for (int i = 1;i <= n;i ++)
{
cin >> a[i];
}
Sort(1,n);//调用
for (int i = 1;i <= n;i ++)
{
cout << a[i] << " ";
}
return 0;
}
思路
1)输入你要排序的数
2)把这些数字拆分拆分拆分,到不能拆分为止
3)合并这些元素,合并时那个小就把那个放上去
4)依次输出元素

c++ 归并排序的更多相关文章
- 算法与数据结构(十五) 归并排序(Swift 3.0版)
上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...
- [算法]——归并排序(Merge Sort)
归并排序(Merge Sort)与快速排序思想类似:将待排序数据分成两部分,继续将两个子部分进行递归的归并排序:然后将已经有序的两个子部分进行合并,最终完成排序.其时间复杂度与快速排序均为O(nlog ...
- 归并排序的java实现
归并排序的优点不说了. 做归并排序之前,我先试着将两个有序数组进行排序,合并成一个有序数组. 思路:定义好两个有序数组,理解的时候我先思考了数组只有一个数组的排序,然后是两个元素的数组的排序,思路就有 ...
- JavaScript算法(归并排序与快速排序)
归并排序与快速排序这两个算法放在一起,也是因为时间复杂度都是对数级别的. 目前看过的资料,归并排序看<学习JavaScript数据结构与算法>介绍的归并排序吧,快速排序直接看百度百科,讲的 ...
- 归并排序算法 java 实现
归并排序算法 java 实现 可视化对比十多种排序算法(C#版) [直观学习排序算法] 视觉直观感受若干常用排序算法 算法概念 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di ...
- java归并排序,单线程vs多线程
一.什么是归并排序 归并排序又称合并排序,它是成功应用分治技术的一个完美例子.对于一个需要排序的数组A[0..n-1],归并排序把它一分为二:A[0..n/2-1]和A[n/2..n-1],并对每个子 ...
- sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding
1 概述 这是基于开源的sphinx全文检索引擎的架构代码分析,本篇主要描述index索引服务的分析.当前分析的版本 sphinx-2.0.4 2 index 功能 3 文件表 4 索引文件结构 4. ...
- php基础排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序
<?php$arr=array(12,25,56,1,75,13,58,99,22);//冒泡排序function sortnum($arr){ $num=count($arr); ...
- [NOIP2013] 火柴排队(归并排序)
题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2 其中 ai 表示 ...
- 用Java写算法之归并排序
转自:http://flyingcat2013.blog.51cto.com/7061638/1281026 前面的三种排序算法(冒泡排序,选择排序,插入排序)在平均情况下均为O(n^2)复杂度,在处 ...
随机推荐
- abp.message
abp.message.success(app.localize('SomeMessage'), app.localize('Title')) .done(function() { //do some ...
- WPF 4 目录树型显示
原文:WPF 4 目录树型显示 本篇将通过WPF4 制作简单的目录树型结构显示实例,完成本篇内容我们将作出下图所示的应用程序. 从图中我们可以看到程序主要分为两部分:左边显示本地驱 ...
- XF 彩色矩形块
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http:/ ...
- MVC EF Code First
1 在Models里面创建类,用[Key]特性指定主键: 2 在Model里面增加导航属性: 3 在web.config里面增加连接字符串 4 创建继承于DbContext的类 5 创建Control ...
- error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“类型说明符”
解决办法: 打开项目工程----> 属性 ---> c/c++ --> 语音 --> 符合模式 修改成否即可
- 手机软件没过多久就删了 APP到底得了什么病?
直击现场 PC互联网时代正渐行渐远,移动互联网的创业浪潮汹涌而至.2014年,中国成为拥有智能手机用户最多的国家,而疯狂生长的APP正占据新的风口.据了解,目前我国主要应用商店的APP已累计超过400 ...
- WPF全局异常捕获
跟着<WPF专业编程开发指南>这书打的代码的,自己在正式项目中测试通过,可以抓取到全局的异常,用的log4net来记录日志 核心代码: 写在App.xaml.cs中 /// <sum ...
- 关于 win32 下磁盘的遍历方法
最近要写个在线专杀的东东,虽然是专杀(本来只要清除几个特定的文件和杀几个特定的进程,然后把用户的注册表恢复正常,很多病毒木马最喜欢干的一件事情就是写 映像劫持 然后机器一重启,安全相关的软件全部玩完了 ...
- 在 .pro里加入 QMAKE_CXXFLAGS += /MP 将并行编译(VC),加快编译速度(姚冬的办法),或者-j4参数(MinGW)
但是只对VC编译器有效果. 另外还可以自己设置stdafx.h文件 http://www.zhihu.com/question/23045749 C:\Qt\Qt5.6.2_static\bin\qm ...
- Spring与IoC
控制反转(IOC,Inversion of Control),是一个概念,是一种思想. 指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理.控制反转就是对对象控制权的转移 ...