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

多少钱网站设计长沙有什么好玩的

多少钱网站设计,长沙有什么好玩的,电子商务网站主要面向,做旅游宣传网站的流程图一个长度为n(n⩾1)的升序序列S,处在第2n​个位置的数称为序列S的中位数(median number),例如#xff0c;序列S1{10,13,14,16,18,19}的中位数是14。两个序列的中位数是它们所有元素的升序序列的中位数#xff0c;例如#xff0c;S2{2,4,8,9,20,21},则S1和S2的中位数是13。现有… 一个长度为n(n⩾1)的升序序列S,处在第2n​个位置的数称为序列S的中位数(median number),例如序列S1{10,13,14,16,18,19}的中位数是14。两个序列的中位数是它们所有元素的升序序列的中位数例如S2{2,4,8,9,20,21},则S1和S2的中位数是13。现有两个等长升序序列A和B,试设计一个在时间和空间两方面都尽可能高效的算法找出两个序列的中位数。 输入格式: 输入在三行进行第一行1个非负整数N表示两个数列的长度,第二行和第三行每行N个非负整数数与数之间用空格间隔。 输出格式: 在一行内输出一个整数。 输入样例: 6 8 11 14 15 17 19 2 4 6 9 10 12 输出样例: 10 方法一探索使用二分搜索算法找到两个排序数组的中位数 在本篇博客中我们将探讨一个使用二分搜索算法来找到两个排序数组的中位数的C程序。我们将在代码中提供详细的解释和注释以帮助读者理解每一步的目的。 #include stdio.hint main() {// 读取输入的整数nint n;scanf(%d, n);// 定义两个长度为n的数组a和bint a[n], b[n];// 循环读取n个整数到数组a中for (int i 0; i n; i){scanf(%d, a[i]);}// 循环读取n个整数到数组b中for (int i 0; i n; i){scanf(%d, b[i]);}// 初始化四个指针l1, r1, l2, r2int l1 0, r1 n - 1, l2 0, r2 n - 1;// 使用二分搜索找到两个数组的中位数while (l1 r1 || l2 r2){int mid1 (l1 r1) 1; // 计算数组a的中间位置int mid2 (l2 r2) 1; // 计算数组b的中间位置// 如果两个中间位置的元素相等那么这个元素就是中位数if (a[mid1] b[mid2]){printf(%d, a[mid1]);return 0;}else if (a[mid1] b[mid2]) // 如果a的中位数小于b的中位数{if ((l1 r1) % 2 0) l1 mid1; // 更新a的左边界else l1 mid1 1; // 更新a的左边界r2 mid2; // 更新b的右边界}else // 如果a的中位数大于b的中位数{if ((l2 r2) % 2 0) l2 mid2; // 更新b的左边界else l2 mid2 1; // 更新b的左边界r1 mid1; // 更新a的右边界}}// 打印两个数组合并后的中位数printf(%d, a[l1] b[l2] ? a[l1] : b[l2]);return 0; } 上面的代码是用来找到两个有序数组a和b的中位数的算法。代码的运行逻辑如下         1. 首先从标准输入中读取整数n表示数组a和b的长度。         2. 然后定义了两个长度为n的数组a和b分别用来存储输入的整数。         3. 接着使用循环分别读取n个整数到数组a和数组b中。         4. 初始化四个指针l1、r1、l2、r2分别表示数组a和数组b的左右边界。         5. 使用二分搜索的思想通过不断缩小搜索范围找到两个数组的中位数。         6. 在循环中首先计算数组a和数组b的中间位置mid1和mid2。         7. 如果a[mid1]等于b[mid2]则直接打印出中位数并结束程序。         8. 否则如果a[mid1]小于b[mid2]则更新a的左边界和b的右边界以缩小搜索范围。         9. 如果a[mid1]大于b[mid2]则更新b的左边界和a的右边界以缩小搜索范围。        10. 最后打印出两个数组合并后的中位数即a[l1]和b[l2]中的较小值。         这样就完成了找到两个有序数组的中位数的过程。 方法二使用快速排序算法找到排序数组的中位数 #includestdio.h #includestdlib.h// cmp函数用于快速排序 int cmp(const void* a,const void* b) {// 比较两个整数的大小return *(int*)b - *(int*)a; }int main() {int n;int a[1000001];// 从标准输入中读取一个整数nscanf(%d,n);// 循环读取2n个整数到数组a中for(int i0;in*2;i){scanf(%d,a[i]);}// 使用快速排序对数组a进行排序qsort(a,n*2,sizeof(a[0]),cmp);// 打印排序后的数组a的中位数printf(%d\n,a[n]);return 0; } 上面的代码是用来找到两个有序数组a和b的中位数的快速排序算法。代码的运行逻辑如下         1. 首先从标准输入中读取整数n表示数组a和b的长度。         2. 然后定义了一个长度为2n的数组a用来存储输入的2n个整数。         3. 接着使用循环分别读取2n个整数到数组a中。         4. 使用快速排序函数qsort对数组a进行排序排序的方式是按照从大到小的顺序排列。         5. 最后打印出排序后的数组a的中位数即a[n]。 qsort()函数是C语言标准库中提供的快速排序函数其函数原型如下 void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); qsort()函数的参数说明如下         1. base指向要排序的数组的首元素的指针。         2. nmemb要排序的元素个数。         3. size每个元素的大小以字节为单位。         4. compar比较函数用于确定元素之间的相对顺序。该函数指针指向一个比较函数该函数接受两个指向常量对象的指针然后返回一个整数值表示两个指针所指向的元素的相对顺序。         快速排序是一种常见的排序算法其基本思想是通过分治的方式将一个大问题分解成若干个小问题然后递归地解决这些小问题。快速排序的具体实现步骤如下         1. 首先选择一个基准元素一般选择第一个或最后一个元素。         2. 然后将待排序的元素分成两部分一部分比基准元素小一部分比基准元素大。         3. 对这两部分元素分别进行递归排序。         4. 最后将排序后的两部分元素合并起来。 快速排序的时间复杂度为O(nlogn)其中n为待排序元素的个数。大家可以先看看后期我会出一期快速排序函数的题集当然得在我学习完之后。
http://www.hkea.cn/news/14486020/

相关文章:

  • 苏州大学网站建设目标养老网站建设方案
  • 四川省建设监理协会网站如何建立一个自己的网址
  • 国外游戏代码网站中山网站建设解决方案
  • 建设银行网站怎么短信转账江苏建设集团公司官网
  • 网站更换空间教程7网站建设1
  • 郑州代理记账网站建设山东住房城乡建设厅网站
  • 自主建设网站的意义中国建设网站
  • 个人网站模板h5湖北建站
  • 网站手册永久免费自助建站源代码
  • 携程做旅游的网站可以免费发广告的网站有哪些
  • 做药材有什么好的网站自己做的网站加载不出验证码
  • wordpress 数据库字段seo官网
  • seo优化网站网站点击换图片的效果怎么做
  • 网站开发持续更新沈阳做网站的公司排名
  • 手机做任务网站有哪些内容企业网站个人可以备案吗
  • 东莞网站制作功能临沂企业建站效果好
  • 有关网站建设的公众号推广联盟
  • 做网站图片怎么做完整网站模板
  • vs和dw做网站的区别做网站绍兴
  • 汕头免费建站英雄联盟网站设计
  • 吉林新农村建设网站做电影网站哪个系统好
  • 做音频后期的素材网站wordpress漏洞利用2016
  • 江西省城乡建设陪训网官方网站管理咨询公司的运作模式
  • 口碑好网站建设费用joomla与wordpress哪个好
  • 怎样制作网站教程思创医惠网站建设
  • 做网站有没有用手机app应用软件开发
  • 网站建设 深圳宝安温州建设集团有限公司网站
  • 山东省建设执业资格注册中心网站七牛图床wordpress
  • 内丘附近网站建设价格wordpress时区
  • 中国建设工程网官方网站培 网站建设方案 doc