Iterative (non-recursive) Merge Sort
Sort Merge Non recursive
2023-09-11 14:20:43 时间
An iterative way of writing merge sort:
#include <iostream> using namespace std; void merge(int A[], int l, int r, int e, int B[]) { int i = l, j = r, k = l; while (i<r && j<e) { if (A[i] > A[j]) B[k++] = A[j++]; else B[k++] = A[i++]; } while (i < r) B[k++] = A[i++]; while (j < e) B[k++] = A[j++]; } void mergeSort(int A[], int n) { int *B = new int[n]; for (int w=1; w<n; w<<=1) { for (int i=0; i<n; i+=(w<<1)) { merge(A, i, min(i+w, n), min(i+(w<<1), n), B); } for (int i=0; i<n; ++i) A[i] = B[i]; } delete[] B; } int main() { int A[5] = {5,4,3,2,1}; mergeSort(A, 5); for (int i=0; i<5; ++i) cout<<A[i]<<" "; return 0; }
相关文章
- linux sort,uniq,cut,wc命令详解
- git:Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).
- python sort、sorted高级排序技巧(转)
- [Algorithms] Divide and Recurse Over an Array with Merge Sort in JavaScript
- Go语言自学系列 | golang标准库中的sort包
- C++sort函数使用总结
- C++库函数sort
- Shell脚本攻略学习笔记十一之sort命令
- Hive中使用sort_array函数解决collet_list列表排序混乱问题