数据结构与算法:C++实现归并排序
来源:互联网 发布:查电话号码软件 编辑:程序博客网 时间:2024/04/30 04:45
归并排序
思想:将两个有序数组归并成一个更大的数组。
优点:保证任意长度为N的数组,排序需要所需时间与NlogN成正比。
缺点:所需的额外空间与N成正比
#include<iostream>using namespace std;int temp[100];void Merge(int* a, int from, int mid, int to){int i = from;int j = mid + 1;for (int i = from; i <= to; i++)temp[i] = a[i];for (int k = from; k <= to; k++){if (i > mid)a[k] = temp[j++];else if (j > to)a[k] = temp[i++];else if (temp[i] < temp[j])a[k] = temp[i++];elsea[k] = temp[j++];}}void MergeSort(int* a, int from, int to){if (from >= to)return;int mid = (from + to) / 2;MergeSort(a, from, mid);MergeSort(a, mid + 1, to);Merge(a, from, mid, to);}int main(){int a[] = { 12, 2, 3, 43, 5, 46, 74, 28, 30, 19, 11, 9 };int n = sizeof(a) / sizeof(int);MergeSort(a, 0, n - 1);for (int i = 0; i < n; i++)cout << a[i] << " ";cout << endl;return 0;}对于小规模的子数组可以使用插入排序,这可以改进大多数递归算法的性能,因为递归会使小规模问题中的方法的调用过于频繁。这一般可以将归并排序的运行时间缩短10%~15%。
0 0
- 数据结构与算法:C++实现归并排序
- 【数据结构与算法】【排序】归并排序的代码实现
- [数据结构与算法]归并排序
- 数据结构与算法-归并排序
- 数据结构与算法-----归并排序
- 【数据结构与算法】归并排序
- 【数据结构与算法】归并排序
- 《数据结构与算法——C语言实现》学习笔记——归并排序
- 【大话数据结构&算法】归并排序(Java/C实现源码)
- 数据结构与算法(C语言版)__归并排序
- 数据结构与算法(10)---Java语言实现:归并排序
- 数据结构(C#)_排序算法(归并排序)
- 数据结构算法】--【排序】:归并排序实现源码
- 【数据结构与算法之排序】归并排序
- (十一)数据结构之归并排序算法实现
- 数据结构与算法之归并排序
- 数据结构与算法之七归并排序
- python数据结构与算法 34 归并排序
- python发邮件
- 第9周项目2-我的数组类
- HDU 1429 胜利大逃亡(续)
- 各种消息下wParam及lParam值的含义
- app内存优化
- 数据结构与算法:C++实现归并排序
- Shell中字符串的截取方法
- python 本地数据获取
- centos 6.4 安装emacs 24.5
- 减少spark job jar包的大小
- 百度全面回应“魏则西事件”:竞价排名不光看价格
- 银行卡号展示时需要将中间的数字加密
- HDU 1285 确定比赛名次(拓扑排序)
- 用git提交修改和新增的代码到github