C# 数据结构
ccUnity
这个作者很懒,什么都没留下…
展开
-
顺序表应用举例
】已知顺序表L,写一算法将其倒置,即实现如图所示的操作,其中(a)为倒置前,(b)为倒置后。 算法思路:把第一个元素与最后一个元素交换,把第二个元素与倒数第二个元素交换。一般地,把第i个元素与第n-i个元素交换,i的取值范围是0到n/2. class MainClass { public static int [] SeqList =new int[]{11,22,3原创 2015-09-08 20:12:10 · 1706 阅读 · 1 评论 -
归并排序(merge Sort)
归并排序有两种方式:(1): 自底向上的方法 自底向上的基本思想是:第1趟归并排序时,将待排序的文件R[1..n]看作是n个长度为1的有序子文件,将这些子文件两两归并,若n为偶数,则得到n/2个长度为2的有序子文件;若n为奇数,则最后一个子文件轮空(不参与归并)。故本趟归并完成后,前n/2 - 1个有序子文件长度为2,但最后一个子文件长度仍为1;第2趟归并则是将第1趟归并所得原创 2015-12-12 19:11:10 · 1111 阅读 · 0 评论 -
栈
栈的定义及基本运算 栈(Stack)是操作限定在表的尾端进行的线性表。表尾由于要进行插入、删除等操作,所以,它具有特殊的含义,把表尾称为栈顶(Top),另一端是固定的,叫栈底(Bottom)。当栈中没有数据元素时叫空栈(Empty Stack)。 栈通常记为:S= (a1,a2,…,an),S是英文单词stack的第1个字母。a1为栈底元素,an为栈顶元素。这n个数据元素按照a1,a2,…,an转载 2015-09-24 13:50:14 · 442 阅读 · 0 评论 -
双向链表
前面介绍的单链表允许从一个结点直接访问它的后继结点,所以, 找直接后继结点的时间复杂度是O(1)。但是,要找某个结点的直接前驱结点,只能从表的头引用开始遍历各结点。如果某个结点的Next等于该结点,那么,这个结点就是该结点的直接前驱结点。也就是说,找直接前驱结点的时间复杂度是O(n),n是单链表的长度。当然,我们也可以在结点的引用域中保存直接前驱结点的地址而不是直接后继结点的地址。这样,找直接前驱结原创 2015-09-24 10:39:55 · 811 阅读 · 0 评论 -
队列
队列的定义及基本运算 队列(Queue)是插入操作限定在表的尾部而其它操作限定在表的头部进行的线性表。把进行插入操作的表尾称为队尾(Rear),把进行其它操作的头部称为队头(Front)。当对列中没有数据元素时称为空对列(Empty Queue)。 队列通常记为:Q= (a1,a2,…,an),Q是英文单词queue的第1个字母。a1为队头元素,an为队尾元素。这n个元素是按照a1,a2,…,a转载 2015-09-24 14:10:02 · 797 阅读 · 0 评论 -
简单排序方法——直接插入排序
直接插入排序(direct InsertSort)的基本思想是:顺序地将待排序的记录按其关键码的大小插入到已排序的记录子序列的适当位置。子序列的记录个数从1开始逐渐增大,当子序列的记录个数与顺序表中的记录个数相同时排序完毕。设待排序的顺序表sqList中有n个记录,初始时子序列中只有一个记录sqList[0]。第一次排序时,准备把记录sqList[1]插入到已排好序的子序列中,这时只需要比较sqL转载 2015-09-30 13:41:17 · 1619 阅读 · 0 评论 -
树
树的定义: 树(Tree)是n(n≥0)个相同类型的数据元素的有限集合。树中的数据元素叫结点(Node)。 n=0的树称为空树(Empty Tree)。对于n>0的任意非空树T有: (1)有且仅有一个特殊的结点称为树的根(Root)结点,根没有前驱结点; (2)若n>1,则除根结点外,其余结点被分成了m(m>0)个互不相交的集合T1,T2,…,Tm,其中每一个集合Ti(1≤i≤m)本身又是一转载 2015-09-24 14:51:29 · 777 阅读 · 0 评论 -
简单排序方法——冒泡排序
冒泡排序(Bubble Sort)的基本思想是:将相邻的记录的关键码进行比较,若前面记录的关键码大于后面记录的关键码,则将它们交换,否则不交换。设待排序的顺序表sqList中有n个记录,冒泡排序要进行n-1趟,每趟循环均是从最后两个记录开始。第1趟循环到第2个记录的关键码与第1个记录的关键码比较后终止,第2趟循环到第3个记录的关键码与第2个记录的关键码比较结束后终止。一般地,第i趟循环到第i转载 2015-09-30 13:45:17 · 659 阅读 · 0 评论 -
简单选择排序
简单选择排序(Simple SelectSort)算法的基本思想是:从待排序的记录序列中选择关键码最小(或最大)的记录并将它与序列中的第一个记录交换位置;然后从不包括第一个位置上的记录序列中选择关键码最小(或最大)的记录并将它与序列中的第二个记录交换位置;如此重复,直到序列中只剩下一个记录为止。设待排序的顺序表sqList中有n个记录,简单选择排序要进行n-1趟,第1趟从n个记录选择关键码最小(或转载 2015-09-30 13:48:37 · 809 阅读 · 1 评论 -
c# 线性表
线性表的形式化定义为:线性表(List)简记为L,是一个二元组, L = (D, R) 其中:D是数据元素的有限集合。 R是数据元素之间关系的有限集合。1线性表的基本操作C#接口的形式表示线性表,接口中的方法成员表示基本操作。并且,为了使线性表对任何数据类型都适用,数据元素的类型使用泛型的类型参数。在实际创建线性表时,元素的实际类型可以用应用程序中任何方便的数据类型来代替,比如用简单的整型或原创 2015-09-08 10:43:19 · 1062 阅读 · 0 评论 -
单链表
1 单链表的定义 在存储数据元素时,除了存储数据元素本身的信息外,还要存储与它相邻的数据元素的存储地址信息。这两部分信息组成该数据元素的存储映像(Image),称为结点(Node)。把存储据元素本身信息的域叫结点的数据域(Data Domain),把存储与它相邻的数据元素的存储地址信息的域叫结点的引用域(Reference Domain)。 如果结点的引用域只存储该结点直接后继结点的原创 2015-09-10 10:32:13 · 456 阅读 · 0 评论 -
快速排序
快速排序的思路:通过不断比较关键码,以某个记录为 界(该记录称为支点),将待排序列分成两部分。其中,一部分满足所有记录的 关键码都大于或等于支点记录的关键码,另一部分记录的关键码都小于支点记录 的关键码。把以支点记录为界将待排序列按关键码分成两部分的过程,称为一次 划分。对各部分不断划分,直到整个序列按关键码有序为止。 设待排序的顺序表 sqList 中有 n 个记录,一般地,第一次划分把第一个转载 2015-10-04 00:32:31 · 474 阅读 · 0 评论