分治法第k小元素poj2104

第六章 分 治 6.1 引言 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 战略 算法设计技术 划分——治理——组合 6.1.1算法总体思想 将要求解的较大规模的问题分割成k个更小规模的子问题。 棋盘覆盖问题 6.1.2一个简单例子 问题一:在一个整数组A[1...n]中,同时寻找最大值和最小值 方法一:顺序扫描法 S1: min=A[1];max=A[1]; S2: 扫描数组,对i从2到n做: S2a: 如果A[i]max,则max=A[i]; S3: 返回x,y的值 比较次数:2n-2 方法二:分治法 基本思想: (1)划分:将数组分割成两半 (2)治理:在每一半中找到最大值和最小值。 (3)合并:返回两个最大值中的最大值和两个最小值中的最小值。 算法6.1 Minmax(int low,int high) {if high-low=1 then if A[low]2 求解递推式得: C(n)=3n/2-2 6.2 二分搜索 问题:在一个有序序列中搜索给定值x,若找到,返回x所在位置,否则返回查找失败标志-1。 二分搜索过程 算法6.2 二分搜索的非递归算法 int BinarySearch(int a[], int n, int x ) { int low=0;high=n-1; while (high >= low){ //待搜区间非空 int mid = (low+ high )/2; if (x == a[mid]) return mid; //查找成功 if (x < a[mid]) high = mid-1; else low = mid+1; } return -1; //查找失败,返回-1 } 算法6.3 二分搜索的递归算法 int BSearch(int a[], int n, int x,int low,int high ) { if(low>high)return -1 //待搜区间为空 else { int mid = (low+ high )/2; if (x == a[mid]) return mid; //查找成功 if (x < a[mid]) return BSearch(a,n,x,low,mid-1); else return BSearch(a,n,x,mid+1,high); } } 二分搜索算法分析 时间复杂度分析: 1 若n=1 C(n)=

寻找中项和第k小元素c语言,分治法第k小元素poj2104.ppt相关推荐

  1. C语言(CED)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。

    )输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出. [输入] 第一行包含一个整数n,表示数组的大小. 第二行包含n个整数,表示数组的元素,整数之间以一个 ...

  2. 2021年上海高考小三门成绩查询,高考小三门怎么算分 上海2021高考小三门

    高考小三门怎么算分,通常高考小三门主要指语数英,以及选科而来的小三门,上海2021高考的小三门通常采用赋分形式计算,具体是怎么算的呢?小编收录整理了一些信息,供大家参考. 高考小三门怎么算分 上海高考 ...

  3. c语言二分法查找数组元素,c语言二分法如何实现查找数组元素

    c语言二分法实现查找数组元素的方法:1.递归算法,代码为[if(a[mid] == key) return mid]:2.非递归算法,代码为[while( left < right && ...

  4. Python算法——分治法查找数组中元素最小最大值

    要求: 给定数组a1,a2,a3,...an,找出数组中最大值和最小值.(数组中两两各不相同) 分析: 算法思想类似于上图,将数组两两分为一组,如果数组元素奇数个,就把最后一个元素单独分为一组,然后分 ...

  5. c语言删除字符常数组的某一个元素,C语言实现删除数组中某个元素

    C语言实现删除数组中某个元素 大家知道C语言实现删除数组中某个元素方法吗?下面将讲述在C语言中实现删除数组中某个元素的两种方法,大家一起看看吧. 方法1:/* name: c语言 删除数组的某个元素 ...

  6. 上海2021高考小三门成绩查询,上海高考小三门怎么算分?附上海小三门等级对应分数...

    选择科目 测一测我能上哪些大学 选择科目 领取你的专属报告 > 选择省份 关闭 请选择科目 确定 v> 高考改革中的等级赋分制度对于很多同学来说都是比较难以理解的.本期,小编将为大家讲解上 ...

  7. c语言程序设计林小茶,C语言第一篇概述林小茶

    <C语言第一篇概述林小茶>由会员分享,可在线阅读,更多相关<C语言第一篇概述林小茶(8页珍藏版)>请在人人文库网上搜索. 1.第一章,C,语言概述,1.1,程序与程序设计语言, ...

  8. 分治法——查找最大最小元素(Python)

    # 基本子算法(子问题规模小于等于 2 时) def get_max(max_list):return max(max_list) def get_min(min_list):return min(m ...

  9. C# 数组增加元素_C语言数组——任意位置插入一个元素

    前言 接着昨天的话题,我们再来看看向C语言的数组中随机插入一个元素的方法. 如果是在python向列表中随机添加元素,我们往往使用insert()的方法. l insert()的第一个参数是位置,第二 ...

最新文章

  1. 洛谷8月赛Div.2
  2. Java 配置C3P0数据连接池存入数据存入数据库出现中文乱码问题
  3. pycharm没有python interpreter_首次安装Pycharm出现No Python interpreter selected解决方法
  4. centos7命令记录
  5. redis之rehash原理
  6. 关于“进程”与“线程”的最通俗解析
  7. lpc2000 filash utility 程序烧写工具_单片机烧录程序的次数
  8. js数组sort排序原理
  9. (计算机组成原理)第七章输入和输出系统-第一节:I/O系统基本概念和I/O控制方式简介
  10. 中南大学计算机院转专业要求,机电工程学院2018级本科学生转专业的实施细则...
  11. c语言窗口最大化,使用SDL处理最大化的窗口
  12. python 绘制简易折线图
  13. neo4j call
  14. 深度学习自学(十六):caffe-sphereface识别代码编译问题-caffe sudo make test报错
  15. 16.卷2(进程间通信)---Sun RPC
  16. P2P概览与原理解析
  17. 陕西省单招计算机应用考什么,陕西省对口单招计算机应用基础模拟试题四
  18. 谷歌浏览器安装apizza
  19. 电脑怎么批量修改图片大小kb?
  20. 图对比学习的应用(NCL,SimGRACE,ClusterSCL)

热门文章

  1. MYSQL存储过程初步认知
  2. win10编译caffe跑faster-rcnn(cuda7.5)
  3. 软件工程个人作业4(课堂练习课堂作业)
  4. 链表的常见操作(转)
  5. C#操作Excel ExcelHelper类(Excel2007)
  6. 一个程序让你学会C++构造函数与重载构造、析构函数【C++类的经典使用案例】
  7. css html 双面打印_CSS语法与规则 — 重学CSS
  8. 深度系统安装移动硬盘启动_深度系统如何安装_电脑知识
  9. 微课|中学生可以这样学Python(3.4节):选择结构的嵌套
  10. Python使用numpy和pandas模拟转盘抽奖游戏