博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
归并排序
阅读量:5331 次
发布时间:2019-06-14

本文共 1298 字,大约阅读时间需要 4 分钟。

自己对归并排序的理解:

归并排序采用分治法来实现,将要排序的数组对半拆分,当拆分到单个元素的时候,在进行合并这时按照一定的顺序合并到临时数组temp中,最后在存入原来的数组中。

代码:

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #define FRE() freopen("in.txt","r",stdin) 9 #define INF 0x3f3f3f3f10 11 using namespace std;12 typedef long long ll;13 const int maxn = 5005;14 int a[maxn],temp[maxn];//负责度O(N*logN)15 16 void mergearrge(int a[],int st,int mid,int en,int temp[])//合并数组17 {18 int i = st,j = mid+1;19 int k = 0;20 while(i <= mid && j <= en)21 {22 if(a[i] <= a[j])23 temp[k++] = a[i++];24 else25 temp[k++] = a[j++];26 }27 while(i <= mid)28 temp[k++] = a[i++];29 while(j <= en)30 temp[k++] = a[j++];31 for(int i = 0; i < k; i++)32 a[st + i] = temp[i];33 }34 35 void mergesort(int a[],int st,int en,int temp[])//拆分数组36 {37 if(st < en)38 {39 int mid = (st + en) / 2;40 mergesort(a, st, mid, temp);41 mergesort(a, mid+1, en, temp);42 mergearrge(a, st, mid, en, temp);43 }44 }45 46 int main()47 {48 a[0] = 5;a[1] = 10;49 a[2] = 45;a[3] = 11;50 a[4] = -1;a[5] = 900;51 mergesort(a, 0, 5, temp);//注意开始和结束下标的填法52 for(int i =0; i < 6; i++)53 printf("%d ",temp[i]);54 return 0;55 }

 

转载于:https://www.cnblogs.com/sykline/p/9737804.html

你可能感兴趣的文章
太笨了
查看>>
实用的两列等高布局
查看>>
NumPy的常用函数
查看>>
Angular CLI 使用教程指南参考
查看>>
nginx的配置文件详解
查看>>
MHA的介绍和测试(一)
查看>>
rsync配置和同步数据
查看>>
uva11630 or hdu2987 Cyclic antimonotonic permutations(构造水题)
查看>>
UIButton的resizableImageWithCapInsets使用解析
查看>>
[翻译] SCRecorder
查看>>
DDCTF2019 的四道题wp
查看>>
linux maven安装(三)
查看>>
Unity3D笔记十三 摄像机之间切换
查看>>
.eww
查看>>
MUI框架-01-介绍-创建项目-简单页面
查看>>
过滤数据
查看>>
Codeforces 992 范围内GCD,LCM要求找一对数 衣柜裙子期望
查看>>
ssh The authenticity of host '10.11.26.2 (10.11.26.2)' can't be established
查看>>
代码学习总结
查看>>
初入Installshield2015
查看>>