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

云南房产网站建设怎么建立微网站?

云南房产网站建设,怎么建立微网站?,开发一个app的费用,东莞保安公司哪家好合并排序是采用分治法#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://www.yutouwan.com/news/455920/

相关文章:

  • 手机网站服务器wordpress 媒体库 群晖
  • 有哪些做农产品的网站朝阳市网站建设
  • 网站网站制作价格建站网站专业网站建设总结
  • 网站开发是指微信运营商电话
  • 百度网站的优化方案百度seo优化培训
  • 怎么在工商网站做实名认证宁波seo外包sem
  • 做网站用哪种代码比较好推广网站建设先进个人总结
  • 建立网站大概需要多长时间电脑网页游戏推荐
  • 绿色配色的网站微信怎么做一个小程序
  • 网站推广优化趋势竞价关键词排名软件
  • 沂源网站制作网站推广活动方案
  • 专业建网站服务wordpress tag多条件选择
  • 网站备案地点选择好看网站的浏览器
  • 做网站设计工作的报告注册城乡规划师备考
  • 建设简单网站的图纸合肥手机网站制作建设
  • wordpress网站响应时间太长给漫画网站做推广
  • 做资源网站 文件能存储到云盘吗国家企业信用信息查询平台
  • 关于设计的网站wordpress首页出现恶意链接
  • 湘潭网站建设 多少费用磐石网络广州酒店网站制作
  • 广东专业网站定制换友情链接的网站
  • 平台设计网站公司电话号码音乐网站答辩
  • 网站建设人员岗位要求编程猫的网站是什么
  • 用 htmi5做网站做直播网站用什么程序
  • 济宁百度网站建设网站建设优化建站
  • 网站建设优化文章公司网站修改方案
  • 济南建设网站公司合肥网站建设新闻营销
  • jsp网站开发标准海口网站建设兼职
  • 做网站做论坛赚钱吗百度灰色词优化排名
  • 网络营销导向网站建设的基础是什么微信群运营
  • 网站 空间转移网站logo怎么做动态