• 算法


    算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列。并且每条指令表示一个或多个操作

    算法具有5个基本特征:输入,输出,有穷性,确定性和可行性

    设计算法应该尽量满足时间效率高和存储量低的需求

    算法时间复杂度的定义

    在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间度量,记作:T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度,其中f(n)是问题规模n的某个函数。

    线性表:零个或多个数据元素的有限序列

    若将线性表记为(a1,a2,a3,a4,........an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。当i = 1,2,3....n-1时ai有且仅有一个直接后继,当i = 2,3....n时,ai有且仅有一个直接前驱,所以线性表的个数n定义为线性表的长度,当n等于0时,为空表

    在较复杂的线性表中,一个数据元素可以由若干个数据项组成。

    线性表的抽象数据类型定义如下:

    ADT 线性表(List)

    Data 

      线性表的数据对象集合为{a1,a2,a3,......an},每个元素的类型均为DataType。其中,除第一个元素a1外,每一个元素有且仅有一个直接前驱元素,除了最后一个元素an外,每一个元素有且仅有一个直接后继元素。数据元素之间的关系是一对一的关系。

    Operation

      InitList(*L): 初始化操作,建立一个空的线性表L。

      ListEmpty(L):若线性表为空,返回true,否则返回false。

      Clearlist(*L): 将线性表清空。

      GetElem(L,i,*e):将线性表L中的第i个位置元素值返回给e。

      LocateElem(L,e):在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功;否则,返回0表示失败。

      ListInsert(*L,i,e):在线性表L中的第i个位置插入新元素e。

      ListDelete(*L,i,*e):删除线性表L中第i个位置元素,并用e返回其值。

      ListLength(L);返回线性表L的元素个数。

    endADT

    将所有的在线性表Lb中但不在La中的数据元素插入到La中

    void unionL(List *La,List Lb)

    {

      int La_len,Lb_len,i;

      ElemType e;

      La_len = ListLength(*La);

      Lb_Len = ListLength(Lb);

      for(i=1;i<=Lb_len;i++)

      {

        GetElem(Lb,i,&e);     取Lb中第i个数据元素赋给e

        if(!LocationElem(*La,e))    La中不存在和e相同的数据元素

          ListInsert(La,++La_len,e);

      }

    }

  • 相关阅读:
    线程练习-网络买票
    永久储存信息(已完善)
    Linux命令
    oracle(3)
    小结
    java开发中中文编码问题
    double保留两位小数
    oracle(2)
    javadate相关
    分布式
  • 原文地址:https://www.cnblogs.com/123talents/p/7476138.html
Copyright © 2020-2023  润新知