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

百度普通下载手机网站排名优化软件

百度普通下载,手机网站排名优化软件,当富广州网站建设,郓城做网站公司目录标题 平均查找长度ASL(Average Search Length)顺序表查找法折半查找法索引顺序查找法 平均查找长度ASL(Average Search Length) 定义:为确定元素在列表中的位置,需要和给定值进行比较的关键字个数的期望值,称之为查找算法成功时的平均查…

目录标题

    • 平均查找长度ASL(Average Search Length)
    • 顺序表查找法
    • 折半查找法
    • 索引顺序查找法

平均查找长度ASL(Average Search Length)

  • 定义:为确定元素在列表中的位置,需要和给定值进行比较的关键字个数的期望值,称之为查找算法成功时的平均查找长度.

ASL = P 1 C 1 + P 2 C 2 + ⋯ + P n C n = ∑ i = 1 n P i C i \text{ASL} = P_1C_1 + P_2C_2 + \cdots + P_nC_n = \sum_{i=1}^{n} P_iC_i ASL=P1C1+P2C2++PnCn=i=1nPiCi

其中,P为第i个元素的概率,C为找到列表中第i个元素时,已经进行过的关键字比较次数.

顺序表查找法

  • 简单粗暴的查找方法,从头开始扫描,直到查找到或扫描结束.
# 1.顺序表查找法
class SeqList:def __init__(self, items):# 顺序表self.items = itemsdef seqSearch(self, key):# 顺序表查找法index = -1for i in range(len(self.items)):if self.items[i] == key:index = i + 1return indexif __name__ == '__main__':print('PyCharm')# 1.顺序表调试nums = [15, 22, 83, 54, 6, 65, 96, 72, 38, 46]sqlist = SeqList(nums)print(sqlist.seqSearch(72))
  • 运行结果

在这里插入图片描述

  • 顺序表查找法的ASL:
    • 假设长度为n,
    • 假设最后一个元素为查找目标,需比较n次,
    • 倒数第二个元素为查找目标,需比较n-1次,
    • 依此类推,
    • 第一个元素为查找目标,需比较1次.
    • 设每个元素为目标元素的概率一致,则概率值为1/n.

ASL = 1 × 1 n + 2 × 1 n + ⋯ + n × 1 n = ( 1 + 2 + ⋯ + n ) × 1 n = n + 1 2 \text{ASL} = 1 \times \frac{1}{n} + 2 \times \frac{1}{n} + \cdots + n \times \frac{1}{n} = \left(1 + 2 + \cdots + n\right) \times \frac{1}{n} = \frac{n+1}{2} ASL=1×n1+2×n1++n×n1=(1+2++n)×n1=2n+1

折半查找法

  • 前提条件:

    • 1.采用顺序存储结构
    • 2.必须按关键字大小有序排列
  • 基本思想:

    • 关键字先与中间元素比较:

      • 若相等,则查找成功
      • 若关键字大,则与后一子表的中间元素比较大小,
      • 若关键字小,则与前一子表的中间元素比较大小,
    • 重复查找,直到查找成功,或比较结束,未查找到.

  • 查找失败情况
    在这里插入图片描述

  • 查找成功情况
    在这里插入图片描述

# 2.折半查找法
class SeqList:def __init__(self, items):# 有序的顺序表self.items = itemsdef binarySearch(self, key):# 折半查找法index = -1low = 0high = len(self.items) - 1while high >= low:mid = (low + high) // 2if self.items[mid] == key:index = mid + 1breakelif self.items[mid] > key:high = mid - 1else:low = mid + 1return indexif __name__ == '__main__':print('PyCharm')# 2.折半查找调试nums = [6, 12, 15, 18, 22, 25, 28, 35, 46, 58, 60]sqlist = SeqList(nums)num = 12index = sqlist.binarySearch(num)if index == -1:print(f"{num}{nums}中未找到")else:print(f"{num}{nums}中的位置为{index}")num = 50index = sqlist.binarySearch(num)if index == -1:print(f"{num}{nums}中未找到")else:print(f"{num}{nums}中的位置为{index}")
  • 运行结果

在这里插入图片描述

  • 折半查找法的ASL:

ASL = ∑ i = 1 n P i C i = 1 n ∑ j = 1 n j × 2 j − 1 = n + 1 n log ⁡ 2 ( n + 1 ) − 1 ≈ log ⁡ 2 ( n + 1 ) − 1 \text{ASL} = \sum_{i=1}^{n} P_i C_i = \frac{1}{n} \sum_{j=1}^{n} j \times 2^{j-1} = \frac{n+1}{n} \log_2(n+1) - 1 \approx \log_2(n+1) - 1 ASL=i=1nPiCi=n1j=1nj×2j1=nn+1log2(n+1)1log2(n+1)1

  • 优点:

    • 比较次数少,查找速度快,平均性能好.
  • 缺点:

    • 要求待查表为有序表且插入/删除困难.

索引顺序查找法

  • 分块查找法,介于顺序查找法和折半查找法之间的一种查找方法.

  • 关键:建立索引表

  • 前提条件:要求将列表组织称索引顺序结构

  • 索引表示意图

在这里插入图片描述

# 3.索引顺序查找表
class Block:def __init__(self, key, low, high):self.key = keyself.low = lowself.high = high + 1class SeqList:def __init__(self, blocks, items):self.blocks = blocksself.items = itemsdef seqSearch(self, cur, key):# 索引顺序查找index = -1low = self.blocks[cur].lowhigh = self.blocks[cur].highfor i in range(low, high):if self.items[i] == key:index = i + 1return indexdef blockSearch(self, key):low = 0high = len(self.blocks) - 1mid = 0while low <= high:mid = (low+high)//2if mid == 0 or mid == len(self.blocks) -1:breakelif key < self.blocks[mid].key and key > self.blocks[mid-1].key:breakelif key > self.blocks[mid].key:low = mid + 1elif key < self.blocks[mid].key:high = mid - 1index = self.seqSearch(mid, key)return indexif __name__ == '__main__':print('PyCharm')# 3.索引表查找调试nums = [18, 14, 12, 25, 8, 28, 32, 45, 36, 58, 60, 88, 71]blocks = [Block(25, 0, 4),Block(58, 5, 9),Block(88, 10, 12)]sqlist = SeqList(blocks, nums)num = 36print(f"{num}{nums}中的位置为{sqlist.blockSearch(num)}")
  • 运行结果

在这里插入图片描述

  • 36查找的过程:

    • 将36与索引表中最大关键字25与58比较,介于他们之间,则表明36在第二块索引表中.
    • 从第二块索引表的起始地址开始扫描,最后找到36所在位置.
  • 索引表查找的ASL:

    • 其中,n为数组数量,s是每块含有元素的个数.

ASL = 1 2 ( n s + s ) + 1 \text{ASL} = \frac{1}{2} \left( \frac{n}{s} + s \right) + 1 ASL=21(sn+s)+1


文章转载自:

http://Ku6YZNQ1.bpmtq.cn
http://cGFIFJe9.bpmtq.cn
http://xckkrBTJ.bpmtq.cn
http://08yZRoEB.bpmtq.cn
http://tnqB0B7b.bpmtq.cn
http://VxUxuwiI.bpmtq.cn
http://9EgnEgSy.bpmtq.cn
http://O0KeuSR7.bpmtq.cn
http://E6C7tFzy.bpmtq.cn
http://kVganXTq.bpmtq.cn
http://NoQsAAQJ.bpmtq.cn
http://ESrVrtVq.bpmtq.cn
http://Y9Kf5vUj.bpmtq.cn
http://voblTwFd.bpmtq.cn
http://bfzguS7S.bpmtq.cn
http://KRZ22TKl.bpmtq.cn
http://ur02PnIc.bpmtq.cn
http://RieirtyH.bpmtq.cn
http://ZRjmNaRg.bpmtq.cn
http://h8EHKKQB.bpmtq.cn
http://hUwPLgA0.bpmtq.cn
http://KffIgdIP.bpmtq.cn
http://kDMVLz6B.bpmtq.cn
http://QJ0ejOjD.bpmtq.cn
http://bXKf2FLV.bpmtq.cn
http://G5OtZBdW.bpmtq.cn
http://QywWV64L.bpmtq.cn
http://Ctg1QNmZ.bpmtq.cn
http://QsByJJIK.bpmtq.cn
http://t3l1wXLD.bpmtq.cn
http://www.dtcms.com/wzjs/680690.html

相关文章:

  • 一台服务做两个网站吗郑州网站建设培训
  • 城阳 网站建设wordpress.org
  • 网站页面可以用什么框架做90后做受网站
  • 网站制作怎么把网站交付wordpress 获取内容
  • php 开源企业网站seo学习论坛
  • 广州制作外贸网站wordpress 自带播放器
  • 网站带gov后缀做网站su软件
  • 建网页和建网站深圳网站建设策划方案
  • 做请帖网站源码屋官网
  • 做互联网网站需要什么资质吗什么是网站开发框架
  • 大连网站建设策划做包装看什么网站
  • 网站开发设计素材百度seo权重
  • 咨询服务类网站建设精品课程网站设计与实现开题报告
  • 改成 响应式 网站常州男科医院哪一个好
  • 烟台网站开发制作临西网站建设
  • 海口企业做网站设计做淘客网站注意事项
  • 教学资源系统网站建设方案免费制作企业宣传视频app
  • 学校网站建设招标互联网创业项目什么赚钱
  • 唐山建设网站制作商丘市网站建设公司
  • 做我的狗漫画网站高端手机
  • 制作网站需要多少费用图片编辑器免费
  • 深圳华丰大厦网站建设招投标网站开发费用
  • 网站建设代理平台有哪些知名品牌营销策划案例
  • 加强机构编制网站建设力度seo赚钱
  • 筹划建设智慧海洋门户网站免费制作相册
  • 网站开发公司的销售方式百度指数入口
  • 如何建立国外网站如何做招聘网站分析
  • 免费域名做网站安装wordpress出现500
  • 网站各种按钮代码wordpress加首页
  • 外贸建站推广多少钱网站建设的工作流程