经典算法整理之归并排序
来源:互联网 发布:ar java技术实现 编辑:程序博客网 时间:2024/06/06 03:18
一、基本思想
有序数组的归并,递归下去,归并上来
二、代码
void mergearray(int a[], int first, int mid, int last, int temp[]) { int i = first, j = mid + 1; int m = mid, n = last; int k = 0; while (i <= m && j <= n) { if (a[i] <= a[j]) temp[k++] = a[i++]; else temp[k++] = a[j++]; } while (i <= m) temp[k++] = a[i++]; while (j <= n) temp[k++] = a[j++]; for (i = 0; i < k; i++) a[first + i] = temp[i]; } void mergesort(int a[], int first, int last, int temp[]) { if (first < last) { int mid = (first + last) / 2; mergesort(a, first, mid, temp); //左边有序 mergesort(a, mid + 1, last, temp); //右边有序 mergearray(a, first, mid, last, temp); //再将二个有序数列合并 } } bool MergeSort(int a[], int n) { int *p = new int[n]; if (p == NULL) return false; mergesort(a, 0, n - 1, p); delete[] p; return true; }
三、性能分析
时间复杂度o(NlogN)
空间复杂度:o(n)
0 0
- 经典算法整理之归并排序
- 经典算法之归并排序
- 经典排序算法之归并排序
- 经典排序算法之归并排序
- 经典算法学习:排序之归并排序
- 经典排序算法之:归并排序
- 经典排序算法之归并排序
- 排序算法整理之归并排序
- 经典白话算法之归并排序
- 经典算法之二:归并排序
- 经典算法之二路归并排序
- 经典算法--归并排序
- 【经典排序算法】归并排序
- 经典排序 之 归并
- 经典排序算法的汇总之归并排序
- 经典排序算法之——归并排序
- Java(.NET)经典排序算法之归并排序
- 经典 算法整理之希尔排序
- How to prepare tech interview
- size_t类型
- [疯狂Java]网络:IP地址和端口号
- C# 图片添加旋转字体文字,实现图片装逼功能
- IPython
- 经典算法整理之归并排序
- 详细解读LruCache类
- [LeetCode][数论]Excel Sheet Column Number
- 输入输出操作符重载
- 杂谈
- 在linux下解压常见软件,并添加环境变量;定制linux系统服务
- Hibernate学习——(十一)HQL
- eclipse debug窗口设置
- php中的文件引用(include,require,include_once,require_once)