#include <iostream>
#include<string.h>

using namespace std;
class merges{
public:
void merge(int *a,int low,int mid,int high)
{
int i,j,k;
i=low;
j=0;//**********
k=mid+1;
int *b=new int[high-low+1];
while(i<=mid&&k<=high)
{
if(a[i]<=a[k])
{
b[j]=a[i];

j++;
i++;
}
else{
b[j]=a[k];
j++;
k++;
}
}

while(i<=mid)
{
b[j]=a[i];
j++;
i++;
}

while(k<=high)
{
b[j]=a[k];
j++;
k++;
}
for(int a1=low,a2=0;a1<=high;a1++,a2++)//######
{
a[a1]=b[a2];

}

}
void mergesort(int *a,int low,int high)
{

if(low<high)
{
int mid=(high+low)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,mid,high);
}

}
};

int main()
{
int arr[]={2,3,5,1,9,98,76};
merges m;
int len=sizeof(arr)/sizeof(int);
m.mergesort(arr,0,len-1);

for(int i=0;i<len;i++)
{

cout<<arr[i]<<endl;
}
return 0;
}

红色部分为易错部分:记住b是新开的,始终只能从一开始,而a的low则不然,随分割次数,low的值也是会变化的。。注意哦!!!!!!!

重要的事情说三遍(我也是错了。一直找不到错的地方。后来改了很久/(ㄒoㄒ)/~~)

归并排序/合并排序c++实现的更多相关文章

  1. C语言归并排序(合并排序)算法及代码

    归并排序也称合并排序,其算法思想是将待排序序列分为两部分,依次对分得的两个部分再次使用归并排序,之后再对其进行合并.仅从算法思想上了解归并排序会觉得很抽象,接下来就以对序列A[0], A[l]…, A ...

  2. 归并排序 & 计数排序 & 基数排序 & 冒泡排序 & 选择排序 ----> 内部排序性能比较

    2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const v ...

  3. 算法笔记_014:合并排序(Java)

    1 问题描述 给定一组数据,使用合并排序得到这组数据的非降序排列. 2 解决方案 2.1 合并排序原理简介 引用自百度百科: 合并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Div ...

  4. JS快速排序 希尔排序 归并排序 选择排序

    /* 快速排序 1.1 算法描述 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用.快速排序是一种既不浪费空间又可以快一 ...

  5. java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述

    算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...

  6. Java实现合并排序

    1 问题描述 给定一组数据,使用合并排序得到这组数据的非降序排列. 2 解决方案 2.1 合并排序原理简介 引用自百度百科: 合并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Div ...

  7. 用javascript比较快速排序和合并排序的优劣

    <script> //用来调用排列方法的类 function arr_sort(arr){ var startTime,endTime; var priv_arr = new Array; ...

  8. julia文件合并排序.jl

    julia文件合并排序.jl """ julia文件合并排序.jl http://bbs.bathome.net/thread-39841-1-1.html 2016年3 ...

  9. lintcode:合并排序数组 II

    题目: 合并排序数组 II 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A = [1, 2, 3, empty, empty] B = [4,5] 合并之后A将变成[1,2,3,4,5] ...

随机推荐

  1. testNG断言

    https://junit.org/junit4/javadoc/latest/org/junit/Assert.html#assertThat 断言:Hamcrest - Matchers 对象: ...

  2. dede:channel的type改为son,currentstyle当前样式就不起作用

    我在修改得闲佬设计作品展示列表页的时候,遇到一个问题,就是channel的type改为son时,currentstyle属性不起作用,试了好久都没办法,后来上网找资料,就找到了解决方法,记录一下.   ...

  3. 1076 Forwards on Weibo (30 分)

    1076 Forwards on Weibo (30 分) Weibo is known as the Chinese version of Twitter. One user on Weibo ma ...

  4. Spark SQL Hive Support Demo

    前提: 1.spark1.0的包编译时指定支持hive:./make-distribution.sh --hadoop 2.3.0-cdh5.0.0 --with-yarn --with-hive - ...

  5. cecium 笔记

    1.Build文件夹 整个拷贝到public文件下,便可使用 2.BingMap(必应地图) Key申请之后,到Build/Cecium/Cecium.js更改默认Key, i.defaultKey ...

  6. 使用再生龙Clonezilla备份还原Linux系统

    一位老哥推荐给我的,产地是祖国宝岛台湾,实测效果非常好,解决了我的一个大问题. 为了减少篇幅,方便阅读,把备份还原的过程单独写一篇随笔. 官网简介:http://clonezilla.nchc.org ...

  7. Spring MVC 自定义类型转换器

    新建一个自定义转换器 import org.springframework.core.convert.converter.Converter; import org.springframework.s ...

  8. SAP订单状态最详细的解释

    order status description explanation CRTD 建立 生产订单创建时的状态,表明订单处于刚刚创建时点,不允许做后续发料,确认等操作. PREL 部分释放(部分下达) ...

  9. ABAP-Keyword Documentation

    转载:https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abenabap.htm ABAP - 关键字文档 本文档描述了ABAP语言 ...

  10. IExpress 制作安装包 注意事项

    被打包的文件名不能超过8个字符,否则iexpress会取前6个字符 + "~1".