当前位置: 首页 > news >正文

钓鱼网站制作者网站源码程序

钓鱼网站制作者,网站源码程序,大型企业网站建设制作,河南省教育厅官方网站师德建设合并排序是采用分治法#xff0c;先将无序序列划分为有序子序列#xff0c;再将有序子序列合并成一个有序序列的有效的排序算法。 原理#xff1a;先将无序序列利用二分法划分为子序列#xff0c;直至每个子序列只有一个元素(单元素序列必有序)#xff0c;然后再对有序子序…合并排序是采用分治法先将无序序列划分为有序子序列再将有序子序列合并成一个有序序列的有效的排序算法。 原理先将无序序列利用二分法划分为子序列直至每个子序列只有一个元素(单元素序列必有序)然后再对有序子序列逐步(两两)进行合并排序。合并方法是循环的将两个有序子序列当前的首元素进行比较较小的元素取出置入合并序列的左边空置位直至其中一个子序列的最后一个元素置入合并序列中。最后将另一个子序列的剩余元素按顺序逐个置入合并序列尾部即可完成排序。整体过程如下图 两个有序子序列合并的原理如下图 代码递归式实现 #include malloc.h #include stdlib.h void mergesort(int A[],int n) //合并排序的递归主体 {void merge(int A[], int L[], int R[], int l, int r); //声明merge函数if(n1) //多于一个元素才需要排序{int midn/2;int *left(int*)malloc(sizeof(int)*mid);int *right(int*)malloc(sizeof(int)*(n-mid));for(int i0;imid;i)left[i]A[i]; //建立临时数组存储左半部分序列for(int jmid;jn;j)right[j-mid]A[j]; //建立临时数组存储右半部分序列mergesort(left,mid); //调用自身对左半部分进行合并排序mergesort(right,n-mid); //调用自身对右半部分进行合并排序merge(A,left,right,mid,n-mid); //两个有序序列的合并操作封装为函数free(left);free(right);} }void merge(int A[],int L[],int R[],int l,int r) //两个有序序列L、R合并为Al,r分别为L,R的长度 {int i0,j0,k0;while(iljr) //两个子序列首元素做比较小者取出置入父序列{if(L[i]R[j])A[k]L[i];elseA[k]R[j];}while(il) //将左半部分剩余元素置入父序列{A[k]L[i];}while(jr) //将右半部分剩余元素置入父序列{A[k]R[j];} } 改进非递归式实现 递归式的实现方法当输入规模增大时会表现出效率低的缺点。且在排序过程中会不断的开辟临时空间容易造成内存混乱。 void mergesort(int A[], int n){ //非递归实现。只开辟一个大小与待排序数组相同的存储数组排序过程中直接在该数组上进行操作。不反复开辟临时数组int step; int *p, *q, *t;int i, j, k, len1, len2;int *temp; step 1; //初始步长为1即将单个元素作为有序子序列进行合并p A;q (int*)malloc(sizeof(int)*n); //q为临时开辟的空间用来存储已排序序列大小为待排序数组的长度temp q; //temp与q指向同一段内存留作最后释放内存空间时使用因为q指针在后面排序操作中可能会改变指向while (stepn){i 0;j i step;k i; //k用作临时数组的下标len1 i step n ? i step : n; //len1表示有序序列1的下标上限len2 j step n ? j step : n; //len2表示有序序列2的下标上限while (in){while (ilen1jlen2) //两个子序列首元素做比较小者取出置入父序列{q[k] p[i]p[j] ? p[i] : p[j];}while (ilen1) //将子序列1的剩余元素置入父序列{q[k] p[i];}while (jlen2) //将子序列2的剩余元素置入父序列{q[k] p[j];}i j; //j经过自增变为len2然后赋值给ij i step; //i被赋值为len2,加上步长再赋值给jk i; len1 i step n ? i step : n;len2 j step n ? j step : n;}step * 2; //步长翻倍即将原步长2倍个数的数组元素作为有序子序列进行合并t p; //t作为临时指针变量用于交换p和q的指针指向p q; //将p指针指向经过一轮合并排序后的临时数组q t; //将q指针指向原数组}if (A ! p){ //如果最终p指针的指向改变为临时数组则将完成排序的数组拷贝至原数组memcpy(A, p, sizeof(int)*n);}free(temp); }
http://wiki.neutronadmin.com/news/255523/

相关文章:

  • 怎么用大淘客做网站网络管理系统组成
  • 创新平台网站建设方案电商软件平台开发
  • 什么是建设型的网站高校网站群管理系统
  • 狗头网网站网站总体设计
  • 上海做展会的网站都有哪些单片机程序员开发网站
  • 网站站长在哪登陆后台3个典型网站建设公司
  • 网站建设的财务分析永久免费自助建站软件
  • 简述网络营销的方法襄阳网站seo
  • 哪个网站做兼职有保障企业网站建设个人博客
  • 网站内容建设的原则是什么外贸网站建设哪家公司比较好
  • 深圳制作网站主页衡阳市住房和城乡建设局官方网站
  • 忻州宁武网站建设wordpress 文章点赞插件
  • 网站建设实践论文网站怎么做出来的
  • 全国最大型网站建设高权重友情链接
  • 园区网站建设服务公司建筑网建筑规范
  • 太原规划网站泰州建筑工程网
  • 免费的ppt网站蚌埠网站制作公司
  • 淘金网站建设推广cd网站建设
  • dnf网站上怎么做商人帮人做微信是哪个网站
  • 网站建设 视频网站为什么改版
  • 找外包网站 和自己做wordpress 订阅
  • 什么网站教做美食上海优刻得官网
  • 广州省建设厅官方网站西安广告设计与制作公司
  • 重庆做商城网站jsp网站开发难吗
  • 建设网站是哪个部门负责计算机专业毕业设计怎么做
  • 朋友做的网站图片不显示网站模版制作
  • 株洲第三方网站建设哪家好gif放网站有锯齿
  • html5网站模板 站长网网站建设维护与推广
  • 网站网站制作网站的网站建设要用到编程吗
  • 简洁网站模板素材个人网站开发盈利模式