数据结构
文章平均质量分 52
smile4lee
这个作者很懒,什么都没留下…
展开
-
数据结构之排序:希尔排序
直接插入排序算法简单,在n值较小时,效率比较高;当n值比较大师,如果待排序序列是按关键字值基本有序,效率依然很高,骑士剑效率可以提高到O(n)O(n)。希尔排序正式从这两点出发对直接插入排序的改进方法。希尔排序(Shell Sort)又称为“缩小增量排序”,有D. L. Shell在1959年首先提出来。基本思想先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录原创 2016-05-02 16:17:03 · 2558 阅读 · 0 评论 -
稀疏矩阵--三元组表示法和十字链表示法
在科学与工程领域中求解线性模型时经常出现大型的稀疏矩阵。在使用计算机存储和操作稀疏矩阵时,经常需要修改标准算法以利用矩阵的稀疏结构。由于其自身的稀疏特性,通过压缩可以大大节省稀疏矩阵的内存代价。更为重要的是,由于过大的尺寸,标准的算法经常无法操作这些稀疏矩阵。三元组表示法按照压缩存储的概念,只存储稀疏矩阵的非零元素。因此,除了存储非零元的值之外,还必须同时记录下它所在的行和列的位置(i,j)。反之,转载 2016-08-28 10:45:22 · 18488 阅读 · 0 评论 -
数据结构之排序:快速排序
快速排序(Quick Sort)由 C. A. Hoare 在1962年提出,是冒泡排序的一种改进。采用了分治策略,将原问题划分成若干个规模更小但与原问题相似的子问题,然后递归方法解决,合并问题的解。基本思想通过一趟排序将序列分割中独立的两个部分,其中一部分的所有记录的关键值都比另外一部分的所有关键值小,按照这种方法对两部分记录分别进行快速排序,地柜进行。一趟快速排序的主要步骤设置两个变量i、j,原创 2016-05-02 16:55:27 · 1633 阅读 · 0 评论 -
哈希表——线性探测法、链地址法、查找成功、查找不成功的平均长度
一、哈希表1、概念 哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构。它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度。这个映射函数就做散列函数,存放记录的数组叫做散列表。2、散列存储的基本思路 以数据中每个元素的关键字K为自变量,通过散列函数H(k)计算出函数值,以该函数值作为一块连原创 2016-04-18 09:55:31 · 149289 阅读 · 32 评论 -
数据结构之排序:排序基本概念和各种排序方法总结
排序的分类内部排序与外部排序按照排序过程设计的存储器的不同分为内部排序与外部排序。内部排序完全在内存中进行,适合数据量不太大的数据元素的排序。外部排序需要访问外部存储器,待排序的数据元素非常多,以至于它们必须存储在外部存储器上。稳定排序与不稳定排序如果对任意一组数据元素序列,使用排序算法排序后,相同关键字之间的前后位置关系在排序前后保持一致,则该排序算法是稳定的。内排序的方法内排序的过程是一个逐步扩原创 2016-05-02 14:55:21 · 4054 阅读 · 0 评论 -
数据结构之排序:堆排序
堆排序(Heap Sort)方法由 J. Willioms 在1964年提出。堆排序只需要一个记录大小的而辅助存储空间,每个待排序的记录仅仅占用一个记录大小的存储空间。堆的定义 假设n个记录关键字的序列当且仅当满足公式时,称为堆。堆包括小顶堆和大顶堆。堆可以用二叉树来描述。基本思想以小顶堆为例。首先将n条记录按照关键字值的大小建成初始堆,将对顶元素r[0]与r[n-1]交换(或者输出);然后,将剩原创 2016-05-02 18:06:03 · 883 阅读 · 0 评论 -
数据结构之排序:直接选择排序
选择排序的主要思想是每一趟从待排序序列中选取一个关键值最小的记录,即第1趟从n个记录中选取关键字值最小的记录,第2趟从剩下的n-1个记录中选取关键字值最小的记录,知道整个序列中的记录都选完为止。由选取记录的顺序便可以得到按照关键字值有序的序列。选择排序包括直接选择排序、树形选择排序、堆排序等,此处只讲关于直接选择排序。基本思想首先在所有记录中选出关键字值最小的记录,把它与第一个记录进行位置交换,然后原创 2016-05-02 17:42:14 · 3489 阅读 · 0 评论 -
数据结构之排序:冒泡排序
冒泡排序(Bubble Sort)基本思想将待排序的数组看成从上到下排放,把关键字值较小的记录看成“较轻的”气泡,关键字值较大的看成“较重的”石块,较轻的上浮,较重的下沉。所有的气泡和石块都在相应的位置,则排序结束。主要步骤置初值i=1在无序序列{r[0], r[1], … , r[n-i]}中,从头到尾依次比较相邻的两个记录r[j]与r[j+1],注意0<=j<=n-i-1,如果r[j]>r[原创 2016-05-02 16:38:21 · 3317 阅读 · 0 评论 -
数据结构之排序:直接插入排序
直接插入排序(Straight Insertion Sort)是一种简单的排序方法。基本思想假设待排序的记录存放在数组r[0..n-1]中。开始时,先将第0个记录组成一个有序的子表,然后依次将后面的记录插入到这个子表中,并且一直保持这个子表的有序,知道全部记录插入完成为止。主要步骤将r[i]暂存在临时变量tmp中将tmp与r[j](j=i-1,i-2,…,0)一次比较,如果tmp<r[j],则将原创 2016-05-02 15:07:48 · 1249 阅读 · 0 评论 -
B树、B-树、B+树、B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关转载 2016-04-17 20:14:35 · 582 阅读 · 0 评论 -
循环队列的相关计算公式
· 设front为队首指针,rear为队尾指针,m为队列最大容量。入队: rear = (rear + 1) % m出队: front = (front + 1) % m队空: front = rear队满: front = (rear + 1) % m当前队列中的元素数目: n = (rear - front + m) % m原创 2016-04-17 15:53:00 · 23417 阅读 · 1 评论 -
数据结构之排序:归并排序
归并排序(Merging Sort)是与插入排序、交换排序、选择排序不同的另一类排序方法。归并的含义时将两个(二路归并)或两个以上(多路归并)的有序表合并成一个新的有序表。此处只讨论二路归并。基本思想将待排序序列r[0]到r[n-1]看成是一个含有n个长度为1的有序子表,将这些子表进行两两归并,得到[n/2]个子表;然后再将这[n/2]个子表进行两两归并,直到最后得到一个长度为n的有序表为止。性能分原创 2016-05-02 18:21:15 · 671 阅读 · 0 评论