归并排序/合并排序c++实现
#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++实现的更多相关文章
- C语言归并排序(合并排序)算法及代码
归并排序也称合并排序,其算法思想是将待排序序列分为两部分,依次对分得的两个部分再次使用归并排序,之后再对其进行合并.仅从算法思想上了解归并排序会觉得很抽象,接下来就以对序列A[0], A[l]…, A ...
- 归并排序 & 计数排序 & 基数排序 & 冒泡排序 & 选择排序 ----> 内部排序性能比较
2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const v ...
- 算法笔记_014:合并排序(Java)
1 问题描述 给定一组数据,使用合并排序得到这组数据的非降序排列. 2 解决方案 2.1 合并排序原理简介 引用自百度百科: 合并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Div ...
- JS快速排序 希尔排序 归并排序 选择排序
/* 快速排序 1.1 算法描述 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用.快速排序是一种既不浪费空间又可以快一 ...
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...
- Java实现合并排序
1 问题描述 给定一组数据,使用合并排序得到这组数据的非降序排列. 2 解决方案 2.1 合并排序原理简介 引用自百度百科: 合并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Div ...
- 用javascript比较快速排序和合并排序的优劣
<script> //用来调用排列方法的类 function arr_sort(arr){ var startTime,endTime; var priv_arr = new Array; ...
- julia文件合并排序.jl
julia文件合并排序.jl """ julia文件合并排序.jl http://bbs.bathome.net/thread-39841-1-1.html 2016年3 ...
- lintcode:合并排序数组 II
题目: 合并排序数组 II 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A = [1, 2, 3, empty, empty] B = [4,5] 合并之后A将变成[1,2,3,4,5] ...
随机推荐
- SQL 字段查找
select [name] from sysobjects where [id] in (select [id] from syscolumns where [name]='a1') SQL 2005 ...
- httpclient 用户名密码认证实例
import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.com ...
- 1113 Integer Set Partition (25 分)
1113 Integer Set Partition (25 分) Given a set of N (>1) positive integers, you are supposed to pa ...
- 1044 Shopping in Mars (25 分)
1044 Shopping in Mars (25 分) Shopping in Mars is quite a different experience. The Mars people pay b ...
- linux shell 命令常用快捷键
下面是一些shell的常用快捷键,快捷键玩熟悉了在一定程度上是可以提高工作效率滴… Ctrl + a 切换到命令行开始 Ctrl + e 切换到命令行末尾 Ctrl + l 清除屏幕内容 Ctrl + ...
- Python- 解决PIP下载安装速度慢 让PIP源使用国内镜像,提升下载速度和安装成功率。
原文: https://www.cnblogs.com/microman/p/6107879.html 对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间. ...
- JedisCluster中应用的Apache Commons Pool对象池技术
对象池技术在服务器开发上应用广泛.在各种对象池的实现中,尤其以数据库的连接池最为明显,可以说是每个服务器必须实现的部分. apache common pool 官方文档可以参考:https://c ...
- SQL查询日期:
SQL查询日期: 今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0 昨天的所有数据:select * from ...
- 第3章 文件I/O(2)_文件I/O系统调用及文件描述符
2. 文件I/O系统调用及文件描述符 2.1 文件I/O系统调用 (1)主要函数 函数 功能 函数 功能 open() 打开文件 read() 读取文件 creat() 创建文件 write() 写入 ...
- Spark standalone运行模式
Spark Standalone 部署配置 Standalone架构 手工启动一个Spark集群 https://spark.apache.org/docs/latest/spark-standalo ...