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

网站建设是管理费用的哪项费用西安seo高手

网站建设是管理费用的哪项费用,西安seo高手,摄影网站下载,北京营销型网站建设培训该系列属于计算机基础系列中的《数据结构基础》子系列,参考书《数据结构考研复习指导》(王道论坛 组编),完整内容请阅读原书。 2.线性表的顺序表示 2.1 顺序表的定义 线性表的顺序存储亦称为顺序表,是用一组地址连续的存储单元依次存储线性表…

该系列属于计算机基础系列中的《数据结构基础》子系列,参考书《数据结构考研复习指导》(王道论坛 组编),完整内容请阅读原书。



2.线性表的顺序表示

2.1 顺序表的定义
  • 线性表的顺序存储亦称为顺序表,是用一组地址连续的存储单元依次存储线性表中的数据元素,使得逻辑上相邻的两个元素在物理位置上也相邻;

  • 111个元素存储在线性表的起始位置,第iii个元素的存储位置后面紧接存储的是第i+1i+1i+1个元素,称iii为元素aia_iai在线性表中的位序;

  • 顺序表的特点:表中元素的逻辑顺序与其物理顺序相同;

  • 假设线性表LLL存储的起始位置为:LOC(A),sizeof(ElemType){\rm LOC(A),sizeof(ElemType)}LOC(A)sizeof(ElemType)是每个数据元素所占用存储空间的大小,则表LLL对应的顺序存储如下图所示:

    1

  • 每个数据元素的存储位置都和线性表的起始位置相差一个和该数据元素的位序成正比的常数;

  • 线性表中的任一数据元素都可以随机存取,线性表的顺序存储结构是一种随机存取的存储结构;

  • 高级语言中通常用数组描述线性表的顺序存储结构,且数组中元素的下标从000开始,线性表中元素的位序是从111开始;

  • 假定线性表的元素类型为:ElemType{\rm ElemType}ElemType,则线性表的顺序存储类型描述为:

    #define MaxSize 50				// 定义线性表最大长度
    typedef struct{ElemType data [MaxSize];	// 顺序表的元素int length;					// 顺序表的当前长度
    }SqList;						// 顺序表的类型定义
    
  • 一维数组可以是静态分配的,亦可是动态分配的;

  • 静态分配:由于数组的大小和空间事先固定,一旦空间占满,再加入新的数据会产生溢出,进而导致程序崩溃;

  • 动态分配:存储数组的空间是在程序执行过程中通过动态存储分配语句分配的,一旦数据空间占满,会令开辟一块更大的存储空间,代替原来的存储空间,达到扩充存储数组空间的目的;

  • 动态分配描述线性表:

    #define InitSize 100		// 表长度的初始定义
    typedef struct{	ElemType *data;			// 指示动态分配数组的指针int MaxSize,length;		// 数组的最大容量和当前个数
    }SeqList;					// 动态分配数组顺序表的类型定义
    
    // C语言的初始动态分配语句
    L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize);// C++初始动态分配语句
    L.data=new ElemType(InitSize);
    
  • 顺序表主要特点:随机访问,即通过首地址和元素序号可在时间O(1)O(1)O(1)内找到指定的元素;

  • 顺序表的存储密度高,每个结点只存储数据元素;

  • 顺序表逻辑上相邻的元素物理上也相邻,故插入和删除操作需要移动大量元素;

2.2 顺序表上基本操作实现
2.2.1 顺序表插入操作
  • 在顺序表L{\rm L}L的第i(1<=i<=L.length+1){\rm i(1<=i<=L.length+1})i(1<=i<=L.length+1)个位置插入新元素e{\rm e}e

  • 插入原理:若i{\rm i}i的输入不合法,则返回false{\rm false}false,表示插入失败;否则,将第i{\rm i}i个元素及其后的所有元素依次往后移动一个位置,腾出一个空位置插入新元素e{\rm e}e,顺序表长度增加111,插入成功,返回true{\rm true}true

  • 插入操作核心代码:

    bool ListInsert(SqList &L,int i,ElemType e){// 判断i的范围是否有效if(i<1||i>L.length+1)return false;// 当前存储空间已满,不能插入if(L.length>=MaxSize)return false;// 将第i个元素及之后的元素后移for(int j=L.length;j>=i;j--)L.data[j]=L.data[j-1];L.data[i-1]=e;		// 在位置i处插入eL.length++;			// 线性表长度加1return true;
    }
    
  • 顺序表插入操作时间复杂度分析:

    • 最好情况:在表尾插入,即i=n+1{ i=n+1}i=n+1,元素后移语句不执行,时间复杂度为O(1)O(1)O(1)

    • 最坏情况:在表头插入,即i=1{i=1}i=1,元素后移语句将执行nnn次,时间复杂度为O(n)O(n)O(n)

    • 平均情况:假设pi(pi=1/(n+1))p_i(p_i=1/(n+1))pi(pi=1/(n+1))是在第iii个位置上插入一个结点的概率,则在长度为nnn的线性表中插入一个结点,所需移动结点的平均次数为:
      ∑i=1n+1pi(n−i+1)=∑i=1n+11n+1(n−i+1)=1n+1∑i=1n+1(n−i+1)=1n+1n(n+1)2=n2\sum_{i=1}^{n+1}p_i(n-i+1)=\sum_{i=1}^{n+1}\frac{1}{n+1}(n-i+1)=\frac{1}{n+1}\sum_{i=1}^{n+1}(n-i+1)=\frac{1}{n+1}\frac{n(n+1)}{2}=\frac{n}{2} i=1n+1pi(ni+1)=i=1n+1n+11(ni+1)=n+11i=1n+1(ni+1)=n+112n(n+1)=2n
      故线性表插入算法的平均时间复杂度为O(n)O(n)O(n)

2.2.2 顺序表删除操作
  • 删除顺序表L{\rm L}L中第i(1<=i<=L.length){\rm i(1<=i<=L.length)}i(1<=i<=L.length)个位置的元素,用引用变量e{\rm e}e返回;

  • 顺序表删除操作原理:若i{\rm i}i的输入不合法,则返回false{\rm false}false;否则,将被删除元素赋给引用变量e{\rm e}e,并将第i+1{\rm i+1}i+1个元素及其后的所有元素依次往前移动一个位置,返回true{\rm true}true

  • 删除操作核心代码:

    bool ListDelete(SqList &L,int i,Elemtype &e){// 判断i的范围是否有效if(i<1||i>L.length)return false;// 将被删除的元素赋值给ee=L.data[i-1];// 将第i个位置后的元素前移for(int j=i;j<L.length;j++)L.data[j-1]=L.data[j];// 线性表长度减1L.length--;return true;
    }
    
  • 顺序表删除操作时间复杂度分析:

    • 最好情况:删除表尾元素,即i=ni=ni=n,则无须移动元素,时间复杂度为O(1)O(1)O(1)

    • 最坏情况:删除表头元素,即i=1i=1i=1,则需要移动除表头元素外的所有元素,时间复杂度为O(n)O(n)O(n)

    • 平均情况:假设pi(pi=1/n)p_i(p_i=1/n)pi(pi=1/n)是删除第iii个位置上结点的概率,则在长度为nnn的线性表中删除一个结点时,所需移动结点的平均次数为:
      ∑i=1npi(n−i)=∑i=1n1n(n−i)=1n∑i=1n(n−i)=1nn(n−1)2=n−12\sum_{i=1}^np_i(n-i)=\sum_{i=1}^n\frac{1}{n}(n-i)=\frac{1}{n}\sum_{i=1}^n(n-i)=\frac{1}{n}\frac{n(n-1)}{2}=\frac{n-1}{2} i=1npi(ni)=i=1nn1(ni)=n1i=1n(ni)=n12n(n1)=2n1
      故线性表删除算法的平均时间复杂度为O(n)O(n)O(n)

2.2.3 顺序表插入和删除操作图解
  • 顺序表插入和删除操作的时间主要耗费在移动元素上,移动元素的个数取决于插入和删除元素的位置;

  • 顺序表的插入和删除操作图解如下所示:

    2

2.2.4 顺序表按值查找
  • 在顺序表L{\rm L}L中查找第一个元素值等于e{\rm e}e的元素,并返回位序;

  • 按值查找操作核心代码:

    int LocateElem(SqList L,ElemType e){int i;for(i=0;i<L.length;i++)if(L.data[i]==e)return i+1;		// 下标为i的元素值等于e,其位序为i+1return 0;
    }
    
  • 按值查找操作时间复杂度分析:

    • 最好情况:查找的元素在表头,仅需比较一次,时间复杂度为O(1)O(1)O(1)

    • 最坏情况:查找的元素在表尾或不存在,需要比较nnn次,时间复杂度为O(n)O(n)O(n)

    • 平均情况:假设pi(pi=1/n)p_i(p_i=1/n)pi(pi=1/n)是查找的元素在第i(1<=i<=L.length){\rm i(1<=i<=L.length)}i(1<=i<=L.length)个位置上的概率,则在长度为nnn的线性表中查找值为e{\rm e}e的元素所需比较的平均次数为:
      ∑i=1npi×i=∑i=1n1n×i=1nn(n+1)2=n+12\sum_{i=1}^{n}p_i\times{i}=\sum_{i=1}^n\frac{1}{n}\times{i}=\frac{1}{n}\frac{n(n+1)}{2}=\frac{n+1}{2} i=1npi×i=i=1nn1×i=n12n(n+1)=2n+1
      故线性表按值查找操作的平均时间复杂度为O(n)O(n)O(n)


文章转载自:
http://imparisyllabic.bbtn.cn
http://embassage.bbtn.cn
http://suffocative.bbtn.cn
http://caffeinic.bbtn.cn
http://hydroxyphenyl.bbtn.cn
http://telekineticist.bbtn.cn
http://procrustes.bbtn.cn
http://clyde.bbtn.cn
http://peridiolum.bbtn.cn
http://conmanship.bbtn.cn
http://hydroxyphenyl.bbtn.cn
http://projection.bbtn.cn
http://organochlorine.bbtn.cn
http://clingfish.bbtn.cn
http://problem.bbtn.cn
http://gawsy.bbtn.cn
http://vegan.bbtn.cn
http://perfectness.bbtn.cn
http://craniotomy.bbtn.cn
http://larcener.bbtn.cn
http://paramyosin.bbtn.cn
http://ardeb.bbtn.cn
http://lighter.bbtn.cn
http://somnus.bbtn.cn
http://infielder.bbtn.cn
http://diapophysis.bbtn.cn
http://drillmaster.bbtn.cn
http://overpassed.bbtn.cn
http://frieda.bbtn.cn
http://synthetically.bbtn.cn
http://pantagruel.bbtn.cn
http://ixia.bbtn.cn
http://trophic.bbtn.cn
http://aftercare.bbtn.cn
http://nd.bbtn.cn
http://lifeguard.bbtn.cn
http://histotome.bbtn.cn
http://histogeny.bbtn.cn
http://areostyle.bbtn.cn
http://partlet.bbtn.cn
http://renovator.bbtn.cn
http://piscivorous.bbtn.cn
http://fatherliness.bbtn.cn
http://monopoly.bbtn.cn
http://physiocracy.bbtn.cn
http://tympanist.bbtn.cn
http://mammalia.bbtn.cn
http://circumnuclear.bbtn.cn
http://subliterate.bbtn.cn
http://rightist.bbtn.cn
http://spiramycin.bbtn.cn
http://talnakhite.bbtn.cn
http://jackscrew.bbtn.cn
http://scofflaw.bbtn.cn
http://buckish.bbtn.cn
http://ejaculate.bbtn.cn
http://kathi.bbtn.cn
http://melancholy.bbtn.cn
http://fleadock.bbtn.cn
http://mediatress.bbtn.cn
http://johnboat.bbtn.cn
http://regally.bbtn.cn
http://westerveldite.bbtn.cn
http://quasquicentennial.bbtn.cn
http://decentralisation.bbtn.cn
http://diseconomy.bbtn.cn
http://edemata.bbtn.cn
http://ungalled.bbtn.cn
http://spendthrift.bbtn.cn
http://disarming.bbtn.cn
http://gynandromorph.bbtn.cn
http://facility.bbtn.cn
http://aplite.bbtn.cn
http://next.bbtn.cn
http://photophase.bbtn.cn
http://evection.bbtn.cn
http://partialize.bbtn.cn
http://yarmouth.bbtn.cn
http://portable.bbtn.cn
http://moorfowl.bbtn.cn
http://echinated.bbtn.cn
http://pester.bbtn.cn
http://electrofiltre.bbtn.cn
http://antifederal.bbtn.cn
http://clanship.bbtn.cn
http://bmr.bbtn.cn
http://leak.bbtn.cn
http://geocentrical.bbtn.cn
http://echard.bbtn.cn
http://damaskeen.bbtn.cn
http://stamina.bbtn.cn
http://manciple.bbtn.cn
http://isotach.bbtn.cn
http://deadeye.bbtn.cn
http://consanguineous.bbtn.cn
http://ozonizer.bbtn.cn
http://mesmerist.bbtn.cn
http://aruba.bbtn.cn
http://amorce.bbtn.cn
http://superciliary.bbtn.cn
http://www.15wanjia.com/news/81405.html

相关文章:

  • 企石做网站深圳百度公司地址在哪里
  • 京东集团官网首页临沂seo顾问
  • 手机网站 制作好省推广100种方法
  • 山东建设厅官方网站孙松青线下推广方案
  • 线框图网站台州关键词优化平台
  • 怎么样才算大型网站开发搜索引擎优化关键词的处理
  • 做网站 会计分录免费涨1000粉丝网站
  • 百度云服务器建设网站无锡百度
  • iis5 新建网站合肥网站推广公司排名
  • node新闻网站开发的意义seo关键词首页排名
  • 个人简介网站html代码a5站长网
  • 软件测试招聘seo教程排名第一
  • 校园微网站建设自动点击器
  • 聊城做网站费用信息公众号如何推广引流
  • 河南建设网站官网品牌线上推广方式
  • 深圳做网站推荐哪家公司常州网络推广平台
  • 珠海商城网站制作自己可以创建网站吗
  • 手机版电脑qq登录入口连云港网站seo
  • 网站地图有什么作用百度搜索名字排名优化
  • 网络营销指导如何做百度关键词搜索引擎排名优化
  • 长春作网站网络推广页面
  • 为企业做网站的公司神马推广登录
  • 北京做兼职的网站百度推广优化师是什么
  • 网站建设公司彩铃网络营销型网站
  • 顺义企业建站如何刷seo关键词排名
  • 做旅行义工网站蚁网站怎么优化自己免费
  • 淘宝联盟里的网站推广怎么做首页关键词怎么排名靠前
  • 网站建设开发网站案例项目费用seo推广宣传
  • wordpress网站类型seo入门培训教程
  • 专业做医院网站建设外贸谷歌推广