数据结构之归并排序
来源:互联网 发布:天下无人不通共 知乎 编辑:程序博客网 时间:2024/05/18 01:06
#include <iostream>using namespace std;//subArrLen为有序子数组的长度,//一次二路归并排序后的有序子序列存于数组swap中void Merge(int a[],int n,int swap[],int subArrLen){ int l1=0;//第一个有序子数组下界为0 int l2=0,u1=0,u2=0; int i=0,j=0; int m=0; while(l1+subArrLen<=n-1) { l2=l1+subArrLen; u1=l2-1; u2=(l2+subArrLen-1<=n-1)?l2+subArrLen-1:n-1; for(i=l1,j=l2;(i<=u1 && j<=u2);m++ ) { if(a[i]<=a[j]) { swap[m]=a[i]; i++; } else { swap[m]=a[j]; j++; } } while(i<=u1) { swap[m]=a[i]; m++; i++; } while(j<=u2) { swap[m]=a[j]; m++; j++; } l1=u2+1; } for(i=l1;i<n;i++,m++) { swap[m]=a[i]; }}void MergeSort(int a[],int n){ int *swap=new int[n]; int subArrLen=1; while(subArrLen<n) { Merge(a,n,swap,subArrLen); for(int i=0;i<n;i++) { a[i]=swap[i]; } subArrLen*=2; } delete []swap;}int main(){ int a[]={6,5,4,3,2,1}; MergeSort(a,6); for(int i=0;i<6;i++) { cout<<a[i]<<' '; } cout<<endl; return 0;}
0 0
- 数据结构之归并排序
- 数据结构之归并排序
- 数据结构之归并排序
- 数据结构之归并排序
- 数据结构之归并排序
- 《数据结构--排序》之归并排序
- 数据结构之排序--归并排序
- 数据结构之排序:归并排序
- 数据结构之(归并排序)
- 数据结构之归并排序、基数排序
- 数据结构系列之归并排序
- 《大话数据结构》之归并排序
- 数据结构之排序——归并排序
- 【数据结构之排序8】归并排序
- 数据结构(26)--排序篇之归并排序
- java数据结构排序之归并排序实现
- 数据结构==》排序之归并排序
- 【数据结构与算法之排序】归并排序
- udacity deep learning lesson中notMNIST数据集下载错误的解决
- LINUX定时任务(crontab)
- DOM学习总结---Element类型
- 119. Pascal's Triangle II
- 设计模式之Decorator(油漆工) 装饰者模式
- 数据结构之归并排序
- iptables详解
- JVM的内存结构
- 推荐系统:技术、评估及高效算法 第1章
- 邻接表 实现图的遍历 C++
- 面向对象<一>
- Mac 安装 Mxnet(cpu版),并跑学梵高画画demo
- C++中显式和隐式调用(直接返回结构体如何生成对象)
- Cookie应用——自动登录