归并排序
来源:互联网 发布:用c语言控制九九乘法表 编辑:程序博客网 时间:2024/06/10 03:36
十一种排序算法
//算法逻辑:1. 将列表分为n个子列表,每一个列表只包含一个元素 2. 反复地归并子列表成一个新的有序列表,直到只剩下一个子列表
Best:nlogn Average:nlogn Worst:nlogn Memory:n worst case Stable:Yes
// 归并排序中的合并算法
void Merge(int array[], int start, int mid, int end){//把两部分数据按大小合并 int temp1[10], temp2[10]; int n1, n2; n1 = mid - start + 1; n2 = end - mid; // 拷贝前半部分数组 for (int i = 0; i < n1; i++) { temp1[i] = array[start + i]; } // 拷贝后半部分数组 for (int i = 0; i < n2; i++) { temp2[i] = array[mid + i + 1]; } // 把后面的元素设置的很大 temp1[n1] = temp2[n2] = 1000; // 逐个扫描两部分数组然后放到相应的位置去 for (int k = start, i = 0, j = 0; k <= end; k++) { //合并两数组temp1和temp2,按顺序大小放到原数据组中,因此需要额外的空间 if (temp1[i] <= temp2[j]) { array[k] = temp1[i]; i++; } else { array[k] = temp2[j]; j++; } }}// 归并排序void MergeSort(int array[], int start, int end){ if (start < end) { int i; i = (end + start) / 2; // 对前半部分进行排序 MergeSort(array, start, i); // 对后半部分进行排序 MergeSort(array, i + 1, end); // 合并前后两部分 Merge(array, start, i, end); }}
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- ionic3 grid网格基础使用
- python 插入数据库错误的字符编码问题
- 在Lua中继承Cocos2dx的C++类
- Xms Xmx PermSize MaxPermSize 区别
- Java中的访问权限详解
- 归并排序
- 关于24点问题的深入(Java)
- 二叉树 24点游戏(Ⅰ) (浮点型精度问题!!!)
- 【unity3d】利用键盘操作物体移动的方法
- 第一篇博客
- jquery.uploadify.js上传插件API总结
- mybatis动态sql中foreach标签的使用
- Java 内存模型
- SourceTree安装时跳过登录