有序集合是一种用来存储数据的容器类型的数据结构,它提供向此容器添加数据,由其中移除数据,更新其中数据的方法同时提供了操作来设置或返回集合中不同属性的值。
集合类可以被分为两种类型:线性和非线性。线性集合是一个元素的列表,其中后一个元素跟着前一个元素。线性集合中元素按位置(第一个,第二个,第三个等等)排序。在现实生活中,杂货店商品列表就是一个线性集合的好例子,在计算机世界中(现实中也一样),数组被设计为一个线性集合。
非线性集合中的元素设有位置上的先后顺序。组织图标就是一个非线性集合的例子,就像撞球的架子。在计算机中,树,堆,图,无序集合都是非线性集合的例子。
集合,无论是线性的还是非线性,都定义了一系列属性来描述它们,并且定义了在它们上面可以执行的操作。集合的属性的例子有集合Count属性,它保存了集合中元素的数量。集合上定义的操作,也被称为方法。包含了Add(向集合增加一个元素),Insert(在指定位置插入一个元素),Remove(移除指定的元素),Clear
C#字符串具有不变性,即一旦一个字符串被初始化,则不能在变化它,当你修改一个字符串时,一个新拷贝将被创建而不是改变原来的字符串的值。在某些情况下这种行为可能会导致性能下降,所以.Net Framework提供了一个StringBuilder类来使你可以使用可变字符串。同样我们会在第8章讨论StringBuilder类。
最后一个直接访问集合类型是结构(其它语言也称结构体或记录)。结构是一个由许多不同类型数据组成的复合数据类型,类如,一个雇员记录有雇员姓名(字符串),薪水(整型),身份证号(字符串或整型)及其它属性。因为将这些数据的每一个值单独存放在不同的变量中较易造成混乱,所以编程语言提供了结构类型来存储这类数据。
算法的五大特性:
有穷性
确定性
可行性
输入
输出
算法设计的要求:
正确性
可读性
健壮性
通用性
效率与存储量需求
算法效率的度量
事后统计:
计算机内部进行执行时间和实际占用空间的统计
但是此问题是需要依赖软硬件,不容易暴露算法本省的问题,所以没有实际价值
事前分析:
求出一个时间界限函数:
先在现有的算法中找出合适的策略
对问题的规模有一定的了解
程序设计的语言
编译器所编译的机器代码的质量
机器执行指令的速度
将硬件等有观的问题分隔开来,就可以认为一个特定的算法的运行工作量的大小,只依赖于问题的规模,或者说
是问题规模的函数
算法分分析
时间复杂度(asymptomatic time complexity)
一般的用最深层的循环内的语句的执行频度来表示即大O表示法O(n)
o(1)是常量时间阶 o(n*n)是二项式的时间阶
其中要说明一点o(n*n)n取实数是和二项式的差距很大
空间复杂度(space complexity)
存储空间:
指令常数变量所占用的存储空间
输入数据所占用的存储空间
辅助(存储)作用空间
一般的说来空间复杂度指的是辅助空间
一维数组a[n]的空间复杂度是o(n)
二维数组a[n*m]的空间复杂度是o(n*m)
数据结构的几个有特点的结构
1、线性表
2、栈
3、队列
4、数组
5、树
算法中的特定算法
1、查找算法
2、排序算法
文件的概念:
大量性质相同的数据记录的集合。文件的所有记录是按某种排列顺序呈现在用户面前,这种排列顺序可以是按记录的关键字,也可以是按记录进入文件的先后等。则记录之间形成一种线性结构(逻辑上的),称为文件的逻辑结构;文件在外存上的组织方式称为文件的物理结构。基本的物理结构有:顺序结构,链接结构,索引结构 。
⑷ 文件的分类
⑴ 按记录类型,可分为操作系统文件和数据库文件:
⑵ 按记录长度,可分为定长记录文件和不定长记录文件:
① 定长记录文件:文件中每个记录都有固定的数据项组成,每个数据项的长度都是固定的;
② 不定长记录文件:与定长记录文件相反。
检索记录
根据用户的要求从文件中查找相应的记录。
① 查找下一个记录:找当前记录的下一个逻辑记录;
② 查找第k个记录:给出记录的逻辑序号,根据该序号查找相应的记录;
③ 按关键字查找:给出指定的关键字值,查找关键字值相同或满足条件的记录。对数据库文件,有以下四种按关键字查找的方式:
◆ 简单匹配:查找关键字的值与给定的值相等的记录;
◆ 区域匹配:查找关键字的值在某个区域范围内的记录;
◆ 函数匹配:给出关键字的某个函数,查找符合条件的记录;
◆ 组合条件匹配:给出用布尔表达式表示的多个条件组合,查找符合条件的记录。
插入记录
将给定的记录插入到文件的指定位置。插入是首先要确定插入点的位置(检索记录),然后才能插入。
⑶ 删除记录
从文件中删除给定的记录。记录的删除有两种情况:
① 在文件中删除第k个记录;
② 在文件中删除符合条件的记录。
⑷ 修改记录
对符合条件的记录,更改某些属性值。修改时首先要检索到所要修改的记录,然后才能修改。
⑸ 记录排序
根据指定的关键字,对文件中的记录按关键字值的大小以非递减或非递增的方式重新排列(或存储)。