八大排序--归并排序
来源:互联网 发布:什么是bim软件 编辑:程序博客网 时间:2024/06/05 05:33
归并排序:1.申请空间, 使其大小为两个已经排序的序列之和, 用来存放合并后的序列。
2.设定两个指针指向两序列的开始。
3.比较两个指针所指的元素,选择小的放的合并空间,移动指针。
4.重复3直到某个指针到达序列尾。
5.将剩余的元素拷到合并空间。
实现代码:
void merge_sort(int *arr, int frist, int mid, int last, int *brr){ int i = frist; int right = last; int k = 0; int left = mid; int j = mid+1; while(i <= left && j <= right) { if(arr[i] <= arr[j]) { brr[k++] = arr[i++]; } else { brr[k++] = arr[j++]; } } while(i <= left) { brr[k++] = arr[i++]; } while(j <= right) { brr[k++] = arr[j++]; } for(i = 0; i < k; ++i) { arr[frist+i] = brr[i]; }}void mergeSort(int *arr, int frist, int last, int* brr){ if(frist < last) { int mid = ((last-frist)>>1)+frist; mergeSort(arr, frist, mid, brr); mergeSort(arr, mid+1, last, brr); merge_sort(arr, frist, mid, last, brr); }}void MergeSort(int *arr, int len){ int *brr = (int*)malloc(sizeof(int)*len); assert(brr != NULL); mergeSort(arr, 0, len-1, brr); free(brr); brr = NULL;}int main(){ int arr[] = {49, 38, 65, 97, 26, 13, 27, 49, 55, 4}; int len = sizeof(arr)/sizeof(arr[0]); MergeSort(arr, len); return 0;}
0 0
- 八大排序--归并排序
- 八大排序--归并排序
- 八大排序---归并排序
- 八大排序算法-归并排序
- 八大排序之归并排序
- 八大排序算法--归并排序
- 八大内部排序 -- 归并排序
- 八大排序算法-归并排序
- 八大排序算法之归并排序
- 八大排序算法(七)归并排序
- 八大排序算法之归并排序
- 八大排序算法 之 归并排序
- 八大排序学习之五归并排序
- 八大排序算法之归并排序
- Java提高 - 八大排序方法之归并排序
- Java 八大排序之——归并排序
- [027]八大排序算法详解——归并排序
- 用Python实现八大排序算法--归并排序
- 对 MVC架构的理解
- python opencv 安装记录及使用记录
- 模拟计算器
- 1.请求安全-- MD5的必要性以及实际应用场景
- MySQL数据库导入到SQL Server
- 八大排序--归并排序
- 失业论
- 2.请求安全-- 如何验证请求的唯一性
- 黑白棋经典残局(1)
- 3.请求安全-- 结合使用的安全优势总结
- 01.程序和cpu
- Ubuntu 16.04中安装Vim 8.0
- ==在对象、基本类型、Integer类中的使用
- 程序员的绘画