博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Aizu - ALDS1_5_B Merge Sort 归并排序
阅读量:3903 次
发布时间:2019-05-23

本文共 1560 字,大约阅读时间需要 5 分钟。

Write a program of a Merge Sort algorithm implemented by the following pseudocode. You should also report the number of comparisons in the Merge function.

Merge(A, left, mid, right)  n1 = mid - left;  n2 = right - mid;  create array L[0...n1], R[0...n2]  for i = 0 to n1-1    do L[i] = A[left + i]  for i = 0 to n2-1    do R[i] = A[mid + i]  L[n1] = SENTINEL  R[n2] = SENTINEL  i = 0;  j = 0;  for k = left to right-1    if L[i] <= R[j]      then A[k] = L[i]           i = i + 1      else A[k] = R[j]           j = j + 1Merge-Sort(A, left, right){  if left+1 < right    then mid = (left + right)/2;         call Merge-Sort(A, left, mid)         call Merge-Sort(A, mid, right)         call Merge(A, left, mid, right

Input

In the first line n is given. In the second line, n integers are given.

Output

In the first line, print the sequence S. Two consequtive elements should be separated by a space character.

In the second line, print the number of comparisons.

Constraints

  • n ≤ 500000
  • 0 ≤ an element in S ≤ 109

Sample Input 1

108 5 9 2 6 3 7 1 10 4

Sample Output 1

1 2 3 4 5 6 7 8 9 1034

 代码如下:

#include 
#include
#include
#include
using namespace std;const int maxn=500005;const int INF=0x3f3f3f3f;int n;int a[maxn];int cnt=0;void Sort (int left,int mid,int right){ int L[(maxn>>1)+10],R[(maxn>>1)+10]; int numl=mid-left; int numr=right-mid; for (int i=0;i
>1; Merge (left,mid); Merge (mid,right); Sort (left,mid,right); }}int main(){ scanf("%d",&n); for (int i=0;i

 

转载地址:http://hpaen.baihongyu.com/

你可能感兴趣的文章
OpenCV的Mat与ATL/MFC的CImage相互转换
查看>>
OpenCV学习笔记(一):读取、显示、保存图片
查看>>
一个代替Mathtype的公式编辑器软件——axmath
查看>>
TLD视觉跟踪算法
查看>>
Altium Designer PCB 常用功能键
查看>>
机器人工程师学习计划
查看>>
实现图像的局部放大
查看>>
eclipse运行时弹出提示java was started but returned exit code=13
查看>>
MATLAB鼠标选取ROC区域
查看>>
MFC按键控制
查看>>
google play app下载方法测试
查看>>
STM32利用FATFS读写数组
查看>>
Altium_Designer如何快速寻找元件和封装
查看>>
PCB各层介绍和AltiumDesigner画PCB时的规则设置
查看>>
char*,const char*和string 三者转换
查看>>
[PADS经验] 【图文并茂】教你如何使用Altium Designer画封装
查看>>
Altium Designer 教程
查看>>
字符串与数字转换方法
查看>>
利用Inoreader跟踪ScienceDirect最新文献教程
查看>>
VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control)
查看>>