MergeSort C++实现
来源:互联网 发布:虚拟机mac打开本地 编辑:程序博客网 时间:2024/05/18 03:52
MergeSort的C++实现,时间复杂度为O(nlogn),空间复杂度为O(n)
#include <iostream>using namespace std;void Merge(int arr[], int start, int mid, int end) {int LeftLen = mid - start + 1;int RightLen = end - mid;int* Left = new int[LeftLen];int* Right = new int[RightLen];int i = 0, j = 0, k = 0, f = 0;for (i = 0,k = start; i < LeftLen; i++, k++) {Left[i] = arr[k];}for (i = 0, k = mid+1; i < RightLen; i++, k++) {Right[i] = arr[k];}for (k = start, i = 0, j = 0; i < LeftLen & j < RightLen; k++) {if (Left[i] <= Right[j]) {arr[k] = Left[i];i++;}if (Left[i] > Right[j]) {arr[k] = Right[j];j++;}}if (i < LeftLen) {for (f = i; f < LeftLen; f++, k++) {arr[k] = Left[f];}}if (j < RightLen) {for (f = j; f < RightLen; f++,k++) {arr[k] = Right[f];}}}void MergeSort(int arr[], int start, int end) {if (start < end) {int mid = (start+end)/2;MergeSort(arr,start, mid);MergeSort(arr,mid+1, end);Merge(arr, start, mid, end);}}int main() { int x; cin >> x; int arr[x]; for(int i = 0; i < x; i++) { cin >> arr[i]; } MergeSort(arr, 0, x-1); for (int i = 0; i < x; i++) { cout << arr[i] << " "; } cout << endl; return 0; }
0 0
- 归并排序 MergeSort C语言实现
- 归并排序C语言实现MergeSort
- linux下归并排序(MergeSort)算法的C语言实现
- mergesort合并排序(3种语言实现 c/java/python)
- c编写Iterative Mergesort
- MergeSort的实现
- C++ 实现MergeSort算法
- MergeSort 的实现
- mergeSort java实现
- MergeSort C++实现
- mergeSort代码实现
- MergeSort -- 归并排序(C++)
- MergeSort
- mergesort
- MergeSort
- mergesort
- mergesort
- Mergesort
- A,B两台机器都正常工作,B机器未监听任何端口.如果A机器向B机器80端口发送SYN包,会收到何种类型的回包?
- <LeetCode> 题44:最小子数组
- android自定义view学习笔记1
- CDOJ 1143 传输数据
- HDU 1686 Oulipo [KMP]
- MergeSort C++实现
- maxlength只对type=“text”和type="password"起作用
- 调用摄像头和相册
- 裸辞
- 星期的研究
- 在jsp页面中不能通过${list.size}取列表长度
- 用 C++ 和 libgd 来绘图
- 数据库基础知识
- server responded “Algorithm negotiation failes” 报错问题解决办法,win7+ubuntu16.04