一、复杂数据类型
基本数据类型是数据结构中仅有一个成员,复杂数据类型中包含多个成员
二、枚举
一种由一组成为枚举数列表的命名常量组成的独特类型。
枚举类型默认可以跟int类型转换,枚举类型跟int类型是兼容的。
默认情况下,第一个枚举数的值是0,后面每个枚举数的值依次递增1.
枚举数可用初始值来重写默认值
enum 枚举名
{
枚举项,
枚举项,
枚举项,
}
三、枚举转换
枚举 转换成int 、int 转换成 枚举
枚举类型默认跟int类型相互兼容,可以通过强制类型转换;
枚举 转换成 字符串 myEnum.ToString();
字符串 转换成 枚举 (要转换的枚举类型)Enum.Parse(typeof(要转换的枚举类型),"要转换的字符串类型");
四、结构体
是一种自定义复合数据类型,可以帮助我们一次性声明多个不同类型的变量,当然多个相同数据类型的变量也可以
声明变量时不能赋初始值
当结构的成员为public时,我们可以通过结构的对象,成员名来访问
struct 结构名
{
成员;
成员;
成员;
}
五、访问权限
- public:指定一个变量、方法和类的访问作用域为公共访问,即外部类也可以通过指定对象来调用
- private:指定一个变量、方法和类的访问作用域为私有访问,即只有内部成员才可以访问
- protect:指定一个变量、方法和类的访问作用域为继承访问,即只有内部与子类成员才可以访问
六、一堆数组
数组定义
数组类型 [ ] 数组名;
数组类型 [ ] 数组名={1,2,3};
数组类型 [ ] 数组名=new 数据类型 [ 3 ] ;
多个相同类型的变量序列
我们可以通过下标号访问到对应变量成员
数组的长度可以通过数组名.Length访问
下标号从0开始计数,数组最后的成员下标为数组名.Length-1;
七、数组排序
7.1 冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端
7.2 选择排序
首先在未排序的序列中找到最大(小)元素,存放到排序序列的起始位置,再从剩余未排序元素中继续寻找最大(小)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕
7.3 插入排序
将第一个待排序序列的第一个元素看做是一个有序序列,把第二个元素到最后一个元素当做是末排序序列,从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置
7.4 希尔排序
选择一个增量序列t1,t2,...,tk,其中ti>tj,tk=1;
按增量序列个数k,对序列进行k趟排列
每趟排列,根据对应的增量ti,将待排序列分割成若干长度为m的子序列,分别对各子表进行插入排序。仅增量因子为1时,整个序列作为一个表来处理,表长度即为整个序列的长度
7.5 归并排序
申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;设定两个指针,最初位置分别为两个已经排序序列的起始位置,比较两个指针所指向的元素,选择相对较小的元素放入到合并空间,并移动指针到下一位置,直到某一指针达到序列尾,将另一序列剩下的所有元素直接复制到合并序列尾
八、二维数组
数组定义
数组类型 [ , ] 数组名;
数组类型 [ , ] 数组名={(1,2),(3,4)};
数组类型 [ , ] 数组名=new 数据类型 [ 2,3 ] ;
九、交错数组
多维数组只能构造一个矩形的数据结构,而使用交错数组可以设计出不规则的结构
int [ ] [ ] CrossArray=new int[3] [ ]{ new int [ ] { 1,2 }
new int[ ]{ 3,4,5}
new int[ ]{ 6,7,8,9 } };