//合并有序数组

//合并例子

void MemeryArray(int a[], int n, int b[],int m, int c[])
{
int i,j,k; i=j=k=0; while(i<n && j<m)
{
if(a[i]<b[j])
{
c[k++] = a[i++];
}
else
{
c[k++]=b[j++];
}
} while(i<n)
{
c[k++]=a[i++];
}
while(j<n)
{
c[k++] = b[j++];
} }

//排序需要调用的如下

//排序调用

bool MergeSort(int a[], int n)
{
int *p = new int[n]; if(p==NULL)
{
return false;
} mergesort(a,0,n-1,p); //用n-1是因为 合并的时候用的是 "<=" 而不是 "<" delete[] p; return true;
}

//数组按照中值,左右执行递归

void mergesort(int a[],int first,int last,int temp[])
{
if(first<last)
{
int mid = (first+last)/2;
mergesort(a,first,mid,temp);
mergesort(a,mid+1,last,temp);
mergearray(a,first,mid,last,temp); }
}

//最后对数组进行合并

void mergearray(int a[], int first, int mid, int last, int temp[])
{
int i=first, j = mid+1;
int m = mid, n =last;
int k=0; while(i<=m&&j<=n)
{
if(a[i]<=a[j])
{
temp[k++]=a[i++];
}
else
{
temp[k++] = a[j++];
}
}
while(i<=m)
{
temp[k++] = a[i++];
}
while(j<=n)
{
temp[k++]=a[j++];
} for(i=0;i<k;i++)
{
a[first+i] = temp[i];
}
}

C++_归并排序的更多相关文章

  1. C++_归并排序(纯C版)

    #include <iostream> #include <stdlib.h> using namespace std; int compared(const void *ke ...

  2. [计蒜客T2238]礼物_线段树_归并排序_概率期望

    礼物 题目大意: 数据范围: 题解: 这题有意思啊($md$卡常 直接做怎么做? 随便上个什么东西,维护一下矩阵乘和插入,比如说常数还算小的$KD-Tree$(反正我是没见人过过 我们漏掉了一个条件, ...

  3. 稳定排序nlogn之归并排序_一维,二维

    稳定排序nlogn之归并排序_一维,二维 稳定排序:排序时间稳定的排序 稳定排序包括:归并排序(nlogn),基数排序[设待排序列为n个记录,d个关键码,关键码的取值范围为radix,则进行链式基数排 ...

  4. 归并排序_分治算法 (白书P226)

    #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int a ...

  5. 算法 排序NB二人组 堆排序 归并排序

    参考博客:基于python的七种经典排序算法     常用排序算法总结(一) 序前传 - 树与二叉树 树是一种很常见的非线性的数据结构,称为树形结构,简称树.所谓数据结构就是一组数据的集合连同它们的储 ...

  6. [Swift]八大排序算法(七):归并排序

    排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...

  7. Scala 实现快速排序和归并排序

    def quickSort1(array: Array[Int]): Array[Int] = { def swap(x: Int, y: Int): Unit = { val tmp = array ...

  8. Scala实现冒泡排序、归并排序和快速排序

    1.冒泡排序 def sort(list: List[Int]): List[Int] = list match { case List() => List() case head :: tai ...

  9. Go基于协程的归并排序简单实现

    归并排序这个可能很多人都不知道,今天用Go语言简单的实现下,其他语言可能要基于线程来实现. //产生一个源 func ArraySource(a ...int) chan int{ out :=mak ...

随机推荐

  1. document.getElementsByClassName方法的重写(OVERRIDE)

    众所周知,对于IE8以下的浏览器(IE8居然是WIN7预装的)没有document.getElementsByClassName,网上也有很多重写的方法,以下是本人在项目中所使用的方法 documen ...

  2. 只有IE能上网,其他浏览器均不可以!

    今天起来,高高兴兴的来到实验室,发现电脑打开上不了网.本人平时喜欢用Chrome,发现上不了网,就开始ping.发现可以ping通,但是网页打不开! 第一反应是DNS的问题,可以发现DNS没问题,能正 ...

  3. 《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇05:角色中弹》

    5.角色中弹 概述: 为了使游戏具有挑战性,大部分游戏设定中,游戏角色都有生命限制.即在游戏中,由于玩家的操控操控不当,导致游戏角色死亡游戏终止.打飞机游戏也不例外,当敌人击中角色的时候,角色宣判死亡 ...

  4. django form关于clean及cleaned_data的说明 以及4种初始化

      1.form类的运行顺序是init,clean,validte,save其中clean和validate会在form.is_valid()方法中被先后调用.(这里留有一个疑问,结构完全相同的两个f ...

  5. SCAU 07校赛 10317 Fans of Footbal Teams

    10317 Fans of Footbal Teams 时间限制:1000MS  内存限制:65535K 题型: 编程题   语言: 无限制 Description Two famous footba ...

  6. SRM 511 DIV1 500pt(DP)

    题目简述 给定n个数,两个人轮流取数,和之前两个人的取的数或起来,谁不能取数或者谁取到的数和之前的数或值为511谁输,问谁能够赢? 题解 刚开始的想法是直接搜,不过需要记录取过的值的状态,2^50显然 ...

  7. 学习使用Markdown标记语言

    学习如何使用Markdown进行文本编辑 使用教程   大家若是经常逛Github,就知道其中有一个文件叫做README.MD.我一开始也不知道这个.MD是什么意思,后来我自己写了一次,就知道了这一种 ...

  8. BAT-使用BAT方法删除目录下0KB文件

    @Echo Off For /f "tokens=*" %%i in ('dir /a-d /b /s "*.*"') do ( If " (Del ...

  9. HDU 5510 Bazinga (2015沈阳现场赛,子串判断)

    Bazinga Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  10. maven系列(2)-第一个maven的项目

    上一篇简单了介绍了maven和maven的安装,这篇介绍如何用maven创建项目. 1. 命令行创建maven项目 maven创建项目很简单,直接调用mvn archetype:generate命令即 ...