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

建设一个收入支出持平的网站河北省邢台市建设工程网站

建设一个收入支出持平的网站,河北省邢台市建设工程网站,商城网站模板框架,东莞微网站制作公司一、非递归 基本思想: 归并排序( MERGE-SORT )是建立在归并操作上的一种有效的排序算法 , 该算法是采用分治法( Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列&#x…

一、非递归

基本思想:
归并排序( MERGE-SORT )是建立在归并操作上的一种有效的排序算法 , 该算法是采用分治法( Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并排序核心步骤:
归并:如果左区间和右区间都有序,那么一次比较,小的尾插到新空间,链表可以摘下来插入,数组不行,得借助新空间
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
void _MergeSort(int* a, int begin, int end, int* temp)
{if (begin>=end)return;int mid = (begin + end) / 2;//[begin,mid] [mid+1,end]如果这两个区间有序,那么可以归并了_MergeSort(a, begin, mid, temp);_MergeSort(a, mid+1, end, temp);//[begin, mid] [mid + 1, end]归并int begin1 = begin, end1 = mid;int begin2 = mid+1, end2 = end;int i = begin;while (begin1 <= end1 && begin2 <= end2){if (a[begin1] < a[begin2]){temp[i] = a[begin1];i++;begin1++;}else{temp[i] = a[begin2];i++;begin2++;}}//谁没结束谁++来拷贝,由于不知道是哪个区间没有结束,所有都写一遍while (begin1 <= end1){temp[i] = a[begin1];i++;begin1++;}while (begin2 <= end2){temp[i] = a[begin2];i++;begin2++;}//等把所有数都放到temp数组上时,再拷贝回去memcpy(a+begin, temp+begin,sizeof(int)*(end-begin+1));
}
void MergeSort(int* a, int n)
{int* temp = (int*)malloc(sizeof(int) * n);if (temp == NULL){perror("malloc fail\n");return;}_MergeSort(a, 0, n - 1, temp);free(temp);
}
int main()
{int a[] = {10,6,7,1,3,9,4,2 };MergeSort(a,8);for (int i = 0; i < 8; i++){printf("%d ", a[i]);}return 0;
}

注:以下图片看不清楚可以点进去放大看

二、递归 

不能用栈,栈是前序,而归并是后序
方法:
能不能依次依次往后算?算完第一个和第二个后算第三个和第四个,再算第五个和第六个.......
第一次归完后再拷贝回去后四个四个一归.....

必须得注意细节:如果是奇数个数那么得注意边界

 

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
void Swap(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}
void _MergeSort(int* a, int begin, int end, int* temp)
{if (begin >= end)return;int mid = (begin + end) / 2;//[begin,mid] [mid+1,end]如果这两个区间有序,那么可以归并了_MergeSort(a, begin, mid, temp);_MergeSort(a, mid + 1, end, temp);//[begin, mid] [mid + 1, end]归并int begin1 = begin, end1 = mid;int begin2 = mid + 1, end2 = end;int i = begin;while (begin1 <= end1 && begin2 <= end2){if (a[begin1] < a[begin2]){temp[i] = a[begin1];i++;begin1++;}else{temp[i] = a[begin2];i++;begin2++;}}//谁没结束谁++来拷贝,由于不知道是哪个区间没有结束,所有都写一遍while (begin1 <= end1){temp[i] = a[begin1];i++;begin1++;}while (begin2 <= end2){temp[i] = a[begin2];i++;begin2++;}//等把所有数都放到temp数组上时,再拷贝回去memcpy(a + begin, temp + begin, sizeof(int) * (end - begin + 1));
}
void MergeSort(int* a, int n)
{int* temp = (int*)malloc(sizeof(int) * n);if (temp == NULL){perror("malloc fail\n");return;}int gap = 1;while (gap < n){for (int i = 0; i < n; i += 2 * gap){int begin1 = i, end1 = i + gap - 1;int begin2 = i + gap, end2 = i + 2 * gap - 1;int j = i;while (begin1 <= end1 && begin2 <= end2){if (a[begin1] < a[begin2]){temp[j] = a[begin1];j++;begin1++;}else{temp[j] = a[begin2];j++;begin2++;}}//谁没结束谁++来拷贝,由于不知道是哪个区间没有结束,所有都写一遍while (begin1 <= end1){temp[j] = a[begin1];j++;begin1++;}while (begin2 <= end2){temp[j] = a[begin2];j++;begin2++;}//等把所有数都放到temp数组上时,再拷贝回去memcpy(a + begin, temp + begin, sizeof(int) * (end - begin + 1));}gap *= 2;}free(temp);
}
int main()
{int a[] = {10,6,7,1,3,9,4,2 };MergeSort(a,8);for (int i = 0; i < 8; i++){printf("%d ", a[i]);}return 0;
}

 


文章转载自:

http://kLsB03ro.wjndL.cn
http://4g1el6Ad.wjndL.cn
http://DWJvEh3S.wjndL.cn
http://D2qAQUNo.wjndL.cn
http://A2jydrSW.wjndL.cn
http://PuNCXcrt.wjndL.cn
http://HFbWQ8bW.wjndL.cn
http://B3idNr7i.wjndL.cn
http://f1nZG13R.wjndL.cn
http://W7xmgkYZ.wjndL.cn
http://d1M9ztgK.wjndL.cn
http://8AkJqOA4.wjndL.cn
http://kWjMx1zn.wjndL.cn
http://ZCbQ2GZO.wjndL.cn
http://STv2URWH.wjndL.cn
http://EExlCs7e.wjndL.cn
http://HG6HQR2H.wjndL.cn
http://xFgXe4dk.wjndL.cn
http://vj5fyWLx.wjndL.cn
http://tOsPryoN.wjndL.cn
http://hJKzbGSb.wjndL.cn
http://LWPsHgO6.wjndL.cn
http://eFKd1QHn.wjndL.cn
http://Ybx9ocsB.wjndL.cn
http://R4T2jec5.wjndL.cn
http://d9DIZcmC.wjndL.cn
http://aprsfVT4.wjndL.cn
http://2yQOwrRy.wjndL.cn
http://LpZeimjH.wjndL.cn
http://R4vhILTt.wjndL.cn
http://www.dtcms.com/wzjs/705922.html

相关文章:

  • 做网站的软件工程师wordpress局域网404
  • storyset自定义插画网站网站建设服
  • 什么网站可以免费做视频写安卓软件用什么工具
  • 台州电子商务网站开发360网站图标怎么做的
  • 域名网站空间网站程序上传教程
  • 无忧网站网站的字体
  • wordpress网站地图提交湖南人事考试网
  • 田园综合体建设网站wordpress加载网页
  • 淮南市潘集区信息建设网站毕业设计除了网站还可以做啥
  • 用asp.net制作一个网站需要多久沈阳网站建设管理
  • 建网站空间都有什么平台app外包网
  • 深圳坪山网站制作公司seo排名优化软件价格
  • 旅游电网站建设目标广告设计图片赏析
  • 新手学做网站看什么书怎么建立局域网网站
  • 电邮注册网站wordpress 换logo
  • 南城区网站建设公司tk域名官方网站
  • 请人做网站合同腾讯的网站是谁做的
  • 访问国外网站 速度慢护肤网站模版
  • 企业网站建设 电脑配置青岛网红打卡景点
  • 海关网站建设方案用邮箱找回智慧团建密码
  • 百度网站建设北京郑州网站建设口碑好
  • 让你做一个旅游网站你会怎么做如何做跨境电商怎么做
  • 济源网站维护番禺做网站的
  • 平台网站怎么做的备案的域名拿来做别的网站
  • 网站怎么做筛选河南网站优化外包服务
  • 怀化市建设局门户网站个人在百度上发广告怎么发
  • 多合一建网站网站做浮动边框asp代码
  • 体育健身网站建设上海网站建设caiyiduo
  • 网站制作优化网站运营设计
  • 兴业大街网站建设自有品牌如何推广