原地归并实现
来源:互联网 发布:微信windows手机版 编辑:程序博客网 时间:2024/05/16 10:49
/**原地归并*/void swap(int* vals, int x, int y){ vals[x] ^= vals[y]; vals[y] ^= vals[x]; vals[x] ^= vals[y];}void reverse(int* vals, int x, int y){ while(x < y) { swap(vals, x, y); x++, y--; }}void cycleMove(int* vals, int L, int M, int R){ reverse(vals, L, M - 1); reverse(vals, M, R); reverse(vals, L, R);}void merge(int* vals, int L, int M, int R){ int pi = L, pj = M + 1; while(pi < pj && pj <= R) { for(; pi < pj && vals[pi] <= vals[pj]; pi++); int lastj = pj; for(; pj <= R && vals[pj] <= vals[pi]; pj++); cycleMove(vals, pi, lastj, pj - 1); pi += (pj - lastj); }}void mergeSort(int* vals, int L, int R){ if(L >= R) return ; int M = (L + R) >> 1; mergeSort(vals, L, M); mergeSort(vals, M + 1, R); merge(vals, L, M, R);}
0 0
- 原地归并实现
- 原地归并
- 原地归并
- 单链表的原地归并排序实现
- 利用手摇算法实现原地归并排序
- 利用手摇法实现原地归并排序
- 单向链表的原地归并排序实现
- 单向链表的原地归并排序实现
- 单向链表的原地归并排序实现
- MergeSort归并排序递归、迭代、原地 c++实现
- 原地归并排序
- 原地归并排序
- 原地归并排序变形
- 原地归并算法
- 原地归并排序
- 原地归并算法
- 原地归并排序
- 原地归并排序
- POJ-2608
- 讲义17:服务器管理
- Android - broadcast receiver and supports-gl-texture
- 俄罗斯方块
- 讲义16:游标
- 原地归并实现
- 1040. Longest Symmetric String (25)【最长回文子串-马拉车(manacher算法)——PAT (Advanced Level) Practise
- linux操作oracle命令
- 机器人走迷宫
- Ubuntu更换网卡驱动
- 讲义15:存储过程
- Incorrect number of FETCH variables
- 讲义14:自定义函数
- ffmpeg tool 简单介绍