归并排序
来源:互联网 发布:海绵城市知乎 编辑:程序博客网 时间:2024/05/29 19:27
归并排序
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二分归并
将待排序序列a[0…n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。
void merge(int a[],int p,int q,int r){ int i,j; int n1=q-p+1;//已排好序的两部分的长度 int n2=r-q; int L[n1+1],R[n2+1];//声明两个数组保存两部分 for(i=0;i<n1;i++) L[i]=a[p+i-1]; for(j=0;j<n2;j++) R[j]=a[q+j]; L[n1]=99999999;//设立两个标志 R[n2]=99999999; i=0; j=0; for(int k=p-1;k<r;k++)//进行合并 { if(L[i]<=R[j]) { a[k]=L[i]; i++; } else { a[k]=R[j]; j++; } }}void mergeSort(int a[],int p,int r)//二分归并{ if(p<r) { int q; q=(p+r)/2; mergeSort(a,p,q); mergeSort(a, q+1, r); merge(a,p,q,r); }}
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 数据库知识点整理
- html 常用标签[3]-表格
- bzoj3626 [LNOI2014]LCA
- 思考
- 一个基于python3+PyQt5实现的简单计算器程序
- 归并排序
- hadoop入门五(基础知识入门)
- 线索化二叉树
- No resource found that matches the given name (at 'layout_above' with value '@id/butt
- elasticsearch 编程api 2
- 2017开学训练第七周周末总结
- 时间序列预测分析:以NASDAQ指数为例
- 按位与、或、异或等的相关操作
- 快排