当前位置: 网站首页>小程序开发>网站优化

张北400电话申请开通【张北企业网站建设】张北微信公众号小程序开发运营价格、张北微信公众号APP软件客户端设计运营、张北网页页面设计公司费用、张北公司网站制作方案流程改版维护大概需要多少钱

发表日期: 2021-04-14 15:39:26 浏览次数:121

张北400电话申请开通【张北企业网站建设】张北微信公众号小程序开发运营价格、张北微信公众号APP软件客户端设计运营、张北网页页面设计公司费用、张北公司网站制作方案流程改版维护大概需要多少钱


河北省张家口市张北县地处河北省西北部,内蒙古高原南缘的坝上地区,境域东西109公里,南北67公里,东南部与崇礼区交界,桦皮岭为全县最高点,海拔2128米;北、中部地势平坦,向西北渐低,安固里淖为最低点,海拔1300米。全县总面积4185平方公里,辖18个乡镇、366个行政村、1167个自然村,总人口37.2万人。居民以汉族为主,占总人口的98%,还有蒙古族、回族、满族等。张北县是离京津地区最近的高原地区,夏天气候凉爽是避暑胜地。

张北县被列为第一批国家新型城镇化综合试点地区。 [1]  2019年11月,入选第二批节水型社会建设达标县(区)名单。 [2]  2020年2月29日,退出贫困县序列,正式脱贫“摘帽”。 [3]  2020年12月,入选河北省数字乡村试点地区名单。

1. 在到达第(8)行时找到元素x,要么

2. 在第(5)行或第(7)行,对长度至多为待查找数组A[low..high]长度一半的子表递归调用自身。

     BOOLEAN binsearch(int x, int A[], int low, int high)
     {
         int mid;(1)      if (low > high)(2)          return FALSE;
         else {(3)          mid = (low + high)/2;(4)          if (x < A[mid])(5)              return binsearch(x, A, low, mid-1);(6)          else if (x > A[mid])(7)              return binsearch(x, A, mid+1, high);
             else /* x == A[mid] */(8)              return TRUE;
         }
     }复制代码

图 6-14 使用二叉查找进行查找操作的函数

由长度为n 的数组开始,在其长度变为1之前,我们最多对有待查找的数组进行log2n 次分割。于是我们要么在A[mid]找到x,要么在对空表调用该函数后仍未找到x

想要在具有n 个元素的数组A中寻找x,可以调用binsearch(x,A,0,n-1)。我们知道binsearch最多会调用自身O(logn)次。在每次调用中,都要花费O(1)的时间,再加上递归调用的时间,因此二叉查找的运行时间是O(logn)。这是可与平均花费O(n)时间的线性查找相媲美的查找方式。

6.5.4 习题

1. 编写函数,利用对数组的线性查找进行下列操作:(a)向表L中插入x;(b)从表L中删除x

2. 使用带哨兵的数组,重复习题(1)的练习。

3. 使用已排序数组,重复习题(1)的练习。

4. 假设表中元素具有任意类型ETYPE,对ETYPE类型来说有函数eq (x,y )区分x 和y 是否相等,还有ly (xy ) 函数可以区分x 就ETYPE类型元素的次序而言是否先于y,编写以下函数:

(a) 图6-11中的lookup函数;

(b) 图6-12中的lookup函数;

(c) 图6-14中的binsearch函数。

5. ** 设图6-14中的二叉查找算法最多进行k 次探测(也就是在第(3)行求mid的值)时最长数组的长度(high-low+1)为P (k )。例如,P(1)=1,且P(2)=3。写出P (k )的递推关系,再求出自己所写的递推关系的解。它是否说明二叉查找进行的探测次数为O(logn)?

6. * 对low 和high 之差进行归纳,证明:如果x 在区域A[low..high]中,那么图6-14中的二叉查找算法会找到x

7. 假设数组中可以出现重复的元素,使得插入操作可以在O(1)时间内完成。为这种数据结构编写插入删除查找函数。

8. 使用迭代,重新编写二叉查找程序。

9. ** 为对n 个元素的数组进行二叉查找的运行时间建立递推关系,并求解。提示:为了简化问题,可以取T(n)作为对具有n 个或更少元素(而不是像我们常用的方法那样刚好有n 个元素)的数组进行二叉查找的运行时间上界。

10. 在三分查找中,给定从low 到high 的区域,先计算该区域中大约1/3处的位置

first=⌊(2×low+high)/3⌋

并将其与A[second ]相比较。如果x>A[first ],就计算近似2/3处的位置

second=⌈(low+2×high)/3⌉

并将xA[second ]进行比较。因此我们将x 隔离在这3个区域的其中一个里,每个区域都不大于low 到high 形成区域的三分之一。编写函数执行三分查找。

11. ** 用三分查找重复习题5。也就是说,要找出三分查找时最多需要k 次探测的最大数组的递推关系并为其求解。二叉查找和三分查找哪种所需的探测次数多?也就是说,对于给定的k,二叉查找和三分查找哪种能处理更大的数组?

6.6 栈

是基于表数据模型的抽象数据类型,栈中的所有操作都是在表的一端执行的,而这一端就叫作栈的栈顶。术语“LIFO表”(后入先出表)指的就是栈。

栈的抽象模型与表的抽象模型如出一辙,也就是一列某一类型的元素a1a2、…、an 。将栈与一般表区分开来的就是栈可以接受的一些特殊操作。我们将在后面的内容中介绍更加齐全的操作,不过现在,我们注意到最精髓的栈操作就是push(压入)和pop(弹出),其中push (x )是将元素x 放在栈顶,pop 则是从栈中移除最顶端的元素。如果将栈顶写在右端,那么对表(a1,a2,…,an)应用push (x )操作,就得到表(a1,a2,…,an ,x)。而弹出表(a1,a2,…,an)得到的是表(a1,a2,…,an-1)。弹出空表ε 是不可能的,而且会出错。

示例 6.9

很多编译器首先会把出现在程序中的中缀表达式转换成等价的后缀表达式。例如,表达式(3+4)×2的后缀形式就是34+2×。栈可以用来为后缀表达式求值。由空栈开始,我们从左至右扫描需要求值的后缀表达式。每当遇到一个参数,就将其压入栈中。而在遇到运算符时,就弹出栈两次,并记下弹出的操作数。然后对弹出的两个值(其中第二个值是运算符左边的操作数)应用该运算符,然后将结果压入该栈。图6-15展示了处理后缀表达式34+2×每一步操作之后栈的情况。在完成处理后,求值的结果14留在该栈中。

处理的符号

操作

初始化

ε


3

3

push 3

4

3,4

push 4

+

ε

pop 4;pop 3
计算7=3+4


7

push 7

2

7,2

push 2

×

ε

pop 2;pop 7
计算14=7×2


14

push 14

图 6-15 用栈求后缀表达式的值

6.6.1 对栈的操作

之前讨论过的两种抽象数据类型——词典和优先级队列,都拥有一组明确与之关联的操作。栈其实是一些相似的ADT,它们有着相同的底层模型,但各自有着所允许操作集不同的变种。在本节中,我们要讨论栈的通用操作,并展示两种可用来实现栈的数据结构,一种是基于链表的,另一种是基于数组的。

正如之前提到的,在任意一组栈操作中都可以看到push 和pop。为栈ADT选择的操作还有个共性:它们都可以在O(1)时间内实现,而与栈中的元素数量无关。大家可以自行验证一下,对于我们提到的两种数据结构,所有操作都只需要常数时间。

除了push 和pop 外,通常还需要clear 操作将栈初始化为空栈。在示例6.9中,默认假设栈一开始为空,而没有解释它为什么是这样。还有一种操作,就是确定栈当前是否为空的测试。

最后要考虑的操作是确定栈是否“已满”的测试。现在在栈的抽象模型中,没有关于满栈的概念,因为原则上讲,栈是可以随意变长的表。不过,在栈的任何一种实现中,都会有某个无法超越的长度。最常见的例子就是在用数组表示表或栈时。正如在6.5节中看到的,必须假设表的长度不会超过常量MAX,否则insert 函数的实现就没法正常工作了。

我们在自己的栈的实现中将要使用的这一操作的正式定义如下。设S 是ETYPE类型的栈而且x 是ETYPE类型的元素。

1. clear (S )。将栈S 清空。

2. isEmpty (S )。如果S 为空,返回TRUE,否则返回FALSE

3. isFull (S )。如果S 已满,返回TRUE,否则返回FALSE

4. pop (S,x )。如果S 为空,返回FALSE;否则,将x 置为栈S 栈顶元素的值,并将该元素从栈S 中删除,然后返回TRUE

张北400电话申请开通张北企业网站建设张北微信公众号小程序开发运营价格、张北微信公众号APP软件客户端设计运营、张北网页页面设计公司费用、张北公司网站制作方案流程改版维护大概需要多少钱

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: http://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878