C++_归并排序
//合并有序数组
//合并例子
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++_归并排序的更多相关文章
- C++_归并排序(纯C版)
#include <iostream> #include <stdlib.h> using namespace std; int compared(const void *ke ...
- [计蒜客T2238]礼物_线段树_归并排序_概率期望
礼物 题目大意: 数据范围: 题解: 这题有意思啊($md$卡常 直接做怎么做? 随便上个什么东西,维护一下矩阵乘和插入,比如说常数还算小的$KD-Tree$(反正我是没见人过过 我们漏掉了一个条件, ...
- 稳定排序nlogn之归并排序_一维,二维
稳定排序nlogn之归并排序_一维,二维 稳定排序:排序时间稳定的排序 稳定排序包括:归并排序(nlogn),基数排序[设待排序列为n个记录,d个关键码,关键码的取值范围为radix,则进行链式基数排 ...
- 归并排序_分治算法 (白书P226)
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int a ...
- 算法 排序NB二人组 堆排序 归并排序
参考博客:基于python的七种经典排序算法 常用排序算法总结(一) 序前传 - 树与二叉树 树是一种很常见的非线性的数据结构,称为树形结构,简称树.所谓数据结构就是一组数据的集合连同它们的储 ...
- [Swift]八大排序算法(七):归并排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- Scala 实现快速排序和归并排序
def quickSort1(array: Array[Int]): Array[Int] = { def swap(x: Int, y: Int): Unit = { val tmp = array ...
- Scala实现冒泡排序、归并排序和快速排序
1.冒泡排序 def sort(list: List[Int]): List[Int] = list match { case List() => List() case head :: tai ...
- Go基于协程的归并排序简单实现
归并排序这个可能很多人都不知道,今天用Go语言简单的实现下,其他语言可能要基于线程来实现. //产生一个源 func ArraySource(a ...int) chan int{ out :=mak ...
随机推荐
- VmWare下安装Linux Centos6.0详细过程
http://www.linuxidc.com/Linux/2012-12/76583.htm和http://mirrors.163.com/centos/6.5/isos/i386/这是有关VmWa ...
- hadoop1.2.1 伪分布式配置
主要配置 core-site.xml hdfs-site.xml mapred-site.xml
- 机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)
版权声明: 本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com.如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任. 前言: ...
- Android多媒体--MediaCodec的实例化方法
*由于作者水平限制,文中难免有错误和不恰当之处,望批评指正. *转载请注明出处:http://www.cnblogs.com/roger-yu/ MediaCodec的实例化方法主要有两种: 1.使用 ...
- Hadoop2.0新特性-持续追加【干货】
1.NAME NODE HA 2.NAME NODE Federation 3.HDFS 快照(目录快照) 4.HDFS 缓存 5.HDFS ACL 6.异构层级存储结构 -------------- ...
- Classes and Objects :类和对象(1)
类的定义:修饰符,class,类名,extends,逗号分隔的implements,类体{}规范的类名:首字母要大写,以后每个单词首字母都大写字段的定义:修饰符,类型,字段名按照封装的思想,字段通常定 ...
- 在eclipse中配置spark 0.9.1源码的开发环境
一.准备工作: 1.下载release版spark 0.9.1,本次用的版本是spark-0.9.1-bin-cdh4. 2.下载scala IDE 3.0.2,这个版本ide的支持scala 2.1 ...
- Selection sort
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- 转载JQuery 中empty, remove 和 detach的区别
转载 http://www.cnblogs.com/lisongy/p/4109420.html .empty() 描述: 从DOM中移除集合中匹配元素的所有子节点. 这个方法不接受任何参数. 这个 ...
- Angularjs 整体框架结构
//angulajs整体代码框架结构/** * @license AngularJS v1.2.6 * (c) 2010-2014 Google, Inc. http://angularjs.org ...