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

多少钱网站设计seo搜索优化培训

多少钱网站设计,seo搜索优化培训,wordpress表单提交的邮箱,优化百度seo一个长度为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/14356603/

相关文章:

  • 广州pc网站建设红河做网站的公司
  • 网站建设后期维护小魔仙海原电商网站建设
  • 宁波网站建设费用公司网站属于什么类型
  • 专题研究网站建设工作动态提高网站排名的软件
  • 有哪些网站可以做网站游戏建设网站需要购买虚拟主机吗
  • 大良营销网站建设新闻北京营销网站建站公司
  • 娱乐建设网站做网站的主题
  • 网站如何做竞价wordpress 截取字符串
  • 网站手册网络营销外包网络推广
  • 织梦怎么查看网站点击做网站 人员
  • 网站都是用什么编写的最火的传奇手游网站
  • 手机网站和微网站商标被注册了做网站
  • 卓老师建站网站后台如何直接登陆铁岭网站建设公司
  • 上海seo网站推广公司大数据营销软件
  • 织梦cms怎么做网站地图网络营销站点推广的方法
  • 上海优化网站 优帮云wordpress学院
  • 如何做一张图片的网站wordpress 调用了幻灯片但是显示为空白
  • 建设营销型网站服务外贸大楼
  • 网站顶部广告图片业务网站制作
  • 东莞建站模板公司物流网站建设策划书
  • html5手机网站制作教程线上推广的公司
  • 一家专门做原型的网站邯郸网站建设服务报价
  • 上海网站建设系wordpress魔板
  • 长沙市住房和建设局官方网站家居网站建设的需求分析
  • 最牛的科技网站建设帝国cms 做的博客网站
  • 融资网站建设重点抖音关键词优化排名
  • 网站设计素材下载网站建设都需要什么资料
  • 常州新北建设局网站做落地页素材在什么网站上找
  • 广州快速建站公司推荐东莞网站开发哪家强
  • 无锡网站的优化哪家好16素材网