归并排序模拟讲解

归并算法速度比较快,但也难理解,我用很详细的叙述将 整个过程给模拟了出来

实现如下:

/*
	Filename:mergeSort.cpp
	Author: xiaobing
	E-mail: xiaobingzhang29@gmail.com
	Date: 2013-08-27
*/
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdlib>
#define N 10
using namespace std;
/*
 *归并排序:
	归并排序的思想是合并两个已经有序的序列为一个大的有序的序列
	首先,进行分组,一分为二,二分为四,依次下去,最终的状态是
	全部分组为一个元素,然后向上开始和并分组,四个合并为两个,
	二个合并为一个,最终在合并的过程中将顺序排好了,具体如下:
	当合并的时候,有两个指针,i,j分别指向分组的第一个元素,分
	陪一个与数组同样大小的数组temp,定义一个k用于遍历数组temp,
	k指向两个分组中的最低的位置,即合并分组传入的开始位置,然后
	分别用指针i和j开始比较第一个分组和第二个分组元素的大小,选择
	小的元素存入temp,同时k增1,在小的元素的那个分组的指针增1,直到
	其中一个分组的元素全部完毕为止,然后把另一个剩下的元素存入temp
	中,k和剩下元素自增。

	这样,temp中就把两个分组的元素排好顺序了,接着,将这些数据对应
	原数组的为止写入,达到局部有序了,经过从小的分组 不断合并,最终
	整个数组就是排序排好的了。
 */
int 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值