博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二路归并排序算法实现-完整C语言程序
阅读量:6000 次
发布时间:2019-06-20

本文共 1560 字,大约阅读时间需要 5 分钟。

/*********************************************************************************************** 1.设定两个指针,最初位置分别为两个已经排序序列的起始位置 2.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 3.重复步骤3直到某一指针达到序列尾 4.将另一序列剩下的所有元素直接复制到合并序列尾 归并排序: 归并排序具体工作原理如下(假设序列共有n个元素): 1.将序列每相邻两个数字进行归并操作,形成floor(n / 2)个序列,排序后每个序列包含两个元素 2.将上述序列再次归并,形成floor(n / 4)个序列,每个序列包含四个元素 3.重复步骤2,直到所有元素排序完毕  归并排序是稳定的,它的最差,平均,最好时间都是O(nlogn)。但是它需要额外的存储空间.  何问起 hovertree.com 归并排序法(Merge Sort,以下简称MS)是分治法思想运用的一个典范。 其主要算法操作可以分为以下步骤:  Step 1:将n个元素分成两个含n/2元素的子序列  Step 2:用MS将两个子序列递归排序(最后可以将整个原序列分解成n个子序列)  Step 3:合并两个已排序好的序列   ************************************************************************************************/    #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std; void Random(int a[],int n) { int i=0; srand( (unsigned)time( NULL ) ); while(i
>1; //mid = (end + begin) / 2; 防止数据加法溢出 merge_sort(a, begin, mid); //分治 merge_sort(a, mid + 1, end); //分治 merge(a, begin, mid, end); //合并两个已排序的数列 } } int main() { int a[20]; Random(a,20); for(int i=0;i<20;i++) { cout<<" "<
<<" "; } merge_sort(a, 0, 20-1); for(int i=0;i<20;i++) { cout<<" "<
<

推荐:

转载于:https://www.cnblogs.com/roucheng/p/cerlu.html

你可能感兴趣的文章
MyEclipse新建Server项目
查看>>
Magento错误处理
查看>>
茵茵的第一课
查看>>
Linux实战教学笔记53:开源虚拟化KVM(一)搭建部署与概述
查看>>
PAT 1007
查看>>
USACO习题:Friday the Thirteenth
查看>>
C++ VS2012 内存泄露检测
查看>>
zabbix 批量添加聚合图形
查看>>
北京交通大学第六届新生程序设计竞赛题解
查看>>
求解点关于直线的距离、垂足、对称点公式
查看>>
洛谷 P1577 切绳子【二分答案】
查看>>
用 Google Map 的 Geocoder 接口来反向地址解析
查看>>
在中小型公司如何做好测试——论测试计划的重要性
查看>>
BSS段、数据段、代码段、堆与栈
查看>>
python调用c/c++写的dll
查看>>
r语言ggplot2误差棒图快速指南
查看>>
python之处理异常
查看>>
c++中的虚函数
查看>>
遍历form表单里面的表单元素,取其value
查看>>
PHP TP框架基础
查看>>