首页 > 编程语言 >数据结构与算法 第一章(48课时课程笔记)Data Structure and Algorithms

数据结构与算法 第一章(48课时课程笔记)Data Structure and Algorithms

时间:2023-12-16 22:11:35浏览次数:29  
标签:语句 48 数据 复杂度 算法 Algorithms 时间 Data

数据结构基础知识

 

数据(Data):是对信息的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项(Data Item)组成。数据项是数据的不可分割的最小单位。

 

数据结构(Data Structure): 是相互之间存在一种或多种特定关系的数据元素的集合。

数据之间的相互关系称为逻辑结构,通常分为四类基本结构:

 集合: 数据元素除同属于一种类型外,别无其它关系。

线性结构: 数据元素之间存在一对一的关系。

树型结构: 数据元素之间存在一对多的关系。

图状结构: 数据元素之间存在多对多的关系。


 

抽象数据类型的表示与实现

 

 一个例子:

算法和算法分析

 算法: 一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算序列

  算法的特性:

(1) 有穷性 算法应在执行有穷步后结束

(2) 确定性 每步定义都是确切的,同输入则同输出

(3) 可行性 算法由可实现的基本运算构成

(4) 输入 有0个或多个输入

(5) 输出 有一个或多个输出(处理结果)

 算法设计的要求

 (1)正确性(Correctness): 算法应满足具体问题的需求。

 (2)可读性(Readability): 算法应该好读。以有利于阅读者对 程序的理解。

 (3)健壮性(Robustness): 算法应具有容错处理。当输入非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。

 (4)效率与存储量需求: 效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。这两者与问题的规模有关。

 

 假定每条语句的执行时间为单位时间。 算法的时间复杂度是该算法中所有语句的执行频度之和。

 

频度: 语句可能重复执行的最大次数。

问题的规模: 算法求解问题的输入量,用整数n表示。

时间复杂度: 一个算法的时间复杂度是该算法的时间耗费,一般地说,时间复杂度是问题规模的函数--T(n)

 

 渐近时间复杂度: 假设问题规模n的某个函数f (n),如果存在两个正常数c和n0,对于所有的n≥n0,有|T(n)|≤c|f(n)|,则记作T(n)= O(f(n)),称作算法的渐近时间复杂度,简称时间复杂度。

时间复杂度由频度的最高阶项来决定

 一般情况下,对循环语句只考虑循环体语句的执行次数,而忽略该语句中步长加一、终值判别、循环转移等成份。因此,当有若干个循环语句时, 算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度所决定的。

如果算法的执行时间是一个与问题规模n无关的常数,则算法的时间复杂度为常数阶,记作T(n)=O(1)

 空间复杂度:算法所需存储空间的度量,记作: S(n)=O(f(n)),其中n为问题的规模(或大小)

 

 

 




标签:语句,48,数据,复杂度,算法,Algorithms,时间,Data
From: https://www.cnblogs.com/sihangao/p/17908385.html

相关文章

  • [LeetCode] 2482. Difference Between Ones and Zeros in Row and Column
    Youaregivena0-indexedmxnbinarymatrixgrid.A0-indexedmxndifferencematrixdiffiscreatedwiththefollowingprocedure:LetthenumberofonesintheithrowbeonesRowi.LetthenumberofonesinthejthcolumnbeonesColj.Letthenumbero......
  • 无涯教程-Java - static String copyValueOf(char data)函数
    此方法返回一个String,它表示指定数组中的字符序列。staticStringcopyValueOf-语法publicstaticStringcopyValueOf(char[]data)这是参数的详细信息-data  - 字符数组。staticStringcopyValueOf-返回值此方法返回一个包含字符数组字符的字符串。staticStrin......
  • 异构dataguard下的db_file_name_convert设置
    环境:主库:win2012server从库:centos6db:11.2.0.4 1.主库上创建表空间createtablespacetps_win01loggingdatafile'c:\oracle\app\oradata\win11g\tps_win01.dbf'size50mautoextendonnext10mmaxsize2048mextentmanagementlocalsegmentspacemanagemen......
  • FirebirdSql.Data.FirebirdClient.FbDataAdapter的bug吗
    在连接Firebird4数据库时,使用以下: FbDataAdapterda=newFbDataAdapter(sql,this.cnstring); DataTabledt=newDataTable(); da.Fill(dt); returndt;在一直的相像中,FbDataAdapter在接收到连接字符串时,会自动创建一个Connection并Open使用,用完再Close,即不需......
  • pandas.read_excel默认读取第一行为列名 但是 pandas.DataFrame默认没有列名, 第一行
    pandas.read_excel默认读取第一行为列名headerint,listofint,default0Row(0-indexed)touseforthecolumnlabelsoftheparsedDataFrame.Ifalistofintegersispassedthoserowpositionswillbecombinedintoa MultiIndex.UseNoneifthereisnoheader.......
  • 202312142321_《遍历 for customised data structure 》
    functioncalculateAssembledSetsAndReturnSkus(suitComponents,inventory){letcomponentCount={};letminComponent={};letresult={};//CountcomponentsinsuitComponentsObject.entries(suitComponents).forEach(([_,components])......
  • CF1481D
    考虑二元环要是二元环相同那么显然怎么构造都可以了否则我们考虑没有二元环相同要是m是奇数我们随便跑跑就行要是m是偶数情况呢我们需要构造一种情况我们肯定用的点数越少越好我们考虑三个点要是两个二元环都是a出或者b出的就可以构造出来了voidsolve(){......
  • 【活动回顾】Databend 云数仓与 Databend Playground 扩展组件介绍
    2023年12月7日,作为KubeSphere的合作伙伴,Databend荣幸地受邀参与了KubeSphere社区主办的云原生技术直播活动。本次活动的核心议题为「Databend云数仓与DatabendPlayground扩展组件介绍」,此次分享由DatabendLabs的研发工程师尚卓燃担任主讲嘉宾,向与会者呈现了一场......
  • Vue 图片上传formdata()传参形式
    1.接口需要设置 headers:{'Content-Type':'multipart/form-data'}, from-data流的形式传参 2.jshtml://文件上传<divclass="file"><el-buttontype="primary"style="width:170px"icon="el-icon-upload......
  • 安装NETDATA集群监控面板
    安装NETDATA集群监控面板介绍官方链接演示网页:https://my-netdata.io/官方首页:http://netdata.cloud/文档地址:http://docs.netdata.cloudgithub地址:https://github.com/netdata/netdata#infographic安装官网提供一键安装脚本bash<(curl-Sshttps://my-netdata.io/kick......