数据结构
数据结构
出类拔萃~
这个作者很懒,什么都没留下…
展开
-
数据结构(串匹配—KMP算法)
KMP算法KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特–莫里斯–普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度O(m+n)KMP算法相当于对BF算法...原创 2020-02-18 15:24:56 · 280 阅读 · 0 评论 -
数据结构(快速排序——非递归实现)
快速排序快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。在之前已经说过了快速排序的递归实现递归实现:https://blog.csdn.net/wfea_lff/arti...原创 2020-02-18 16:18:21 · 936 阅读 · 2 评论 -
数据结构(串匹配—BF算法)
BF算法BF算法即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。BF算法(朴素算法) 思想简单 效率比较低下时间复杂度:O(n*m)n:为S串的长...原创 2020-02-17 17:49:57 · 2856 阅读 · 0 评论 -
数据结构(快速排序——递归实现)
快速排序快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。时间复杂度:O(nlogn)空间复杂度:O(logn)稳定性:不稳定排序过程如图所示:上图是进行一趟快速排...原创 2020-02-16 14:43:34 · 430 阅读 · 0 评论 -
数据结构(基数排序)
基数排序基数排序(radix sort)属于"分配式排序"(distribution sort),又称"桶子法"(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些"桶"中,藉以达到排序的作用,其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。时间复杂度: O(m(n+r))空间复杂度 : O(n+r)...原创 2020-02-10 17:42:09 · 3473 阅读 · 1 评论 -
数据结构(希尔排序)
希尔排序希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因D.L.Shell于1959年提出而得名之前我们已经讲过直接插入排序直接插入排序:https://blog.csdn.net/wfea_lff/article/details/104002438这里就不多说了,直接进入主题时间复杂度: O(n^1.3 ~ n^1.5)空间复...原创 2020-02-09 20:42:04 · 526 阅读 · 0 评论 -
数据结构(归并排序)
归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。时间复杂度:O(n log n)空间复杂度:O(n)稳定性:稳定排序过...原创 2020-02-03 17:54:12 · 538 阅读 · 0 评论 -
数据结构(直接插入排序)
直接插入排序直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。直接插入排序流程例如:41 67 34 0 69 24 78 58 62 64定义临时变量tmp第一趟:在待排序的数字中选择第二个数字(67)将其存入tmp中,让tmp与第一个数字(4...原创 2020-01-16 12:37:55 · 1133 阅读 · 1 评论 -
数据结构(选择排序)
选择排序选择排序法 是对 定位比较交换法(也就是冒泡排序法) 的一种改进。选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。选择排序流程第一趟:先在未排序的数字中随便找到一个数字,将其定为最小的值,并让当前最小的值与其他数字依次比较,如果其他数字大于当前最小值则当前最小值继续与下一个数字进行比较,如果当前最小值大于比较的数...原创 2020-01-14 19:16:50 · 155 阅读 · 0 评论 -
数据结构(冒泡排序)
冒泡排序冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。冒泡排序流程第一趟:依次比较相邻的两个数,将小数放在前面,大数放在后面首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,...原创 2019-12-16 11:27:32 · 531 阅读 · 0 评论 -
数据结构(链栈)
数据结构链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作。栈的定义栈(Stack)又称堆栈,它是一种运算受限的线性表,其限制是仅允许在表的一端进...原创 2019-12-10 13:55:53 · 1324 阅读 · 0 评论 -
数据结构(链式队列)
数据结构队列队列和栈很相似,都是一种顺序表,链表;不过栈的特性为先进后出,而队列的特性为先进先出,且在生活中用处很多,比如说排号系统,银行的叫号系统都是用先进先出的特性完成的链式队列一、定义链式队列Ps:用链表来实现队列typedef int ElemType;typedef struct Node //链表{ ElemType data; Node *n...原创 2019-12-09 10:42:25 · 1061 阅读 · 0 评论 -
数据结构(顺序循环队列)
数据结构队列队列和栈很相似,都是一种顺序表,链表;不过栈的特性为先进后出,而队列的特性为先进先出,且在生活中用处很多,比如说排号系统,银行的叫号系统都是用先进先出的特性完成的顺序循环队列一、定义顺序循环队列Ps:用顺序表来实现顺序循环队列typedef int ElemType;#define SIZE 10typedef struct SCQueue ...原创 2019-12-06 15:57:52 · 869 阅读 · 0 评论 -
数据结构(逆波兰式--------用栈实现)
数据结构栈又称堆栈,它是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。人们把此端称为栈顶,栈顶的第一个元素被称为栈顶元素,相对地,把另一端称为栈底。向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其下面的相邻元素成为新的栈顶元素。栈的实现:https://blog.csdn...原创 2019-12-04 20:57:07 · 4510 阅读 · 0 评论 -
数据结构(顺序栈)
数据结构顺序表顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。在写顺序表的时候,需...原创 2019-12-02 10:54:26 · 456 阅读 · 0 评论 -
数据结构(不带头结点的单链表)
数据结构单链表单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据在写单链表的时候,需要对结构体有一定的了解(这里就不做过多的结构体介绍)不带头结点的单链表头结点一般在栈区或者数据区开辟且头结点不存储...原创 2019-11-26 10:59:57 · 3160 阅读 · 0 评论 -
数据结构(带头结点的单链表)
数据结构单链表单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据在写单链表的时候,需要对结构体有一定的了解(这里就不做过多的结构体介绍)带头结点的单链表头结点一般在栈区或者数据区开辟且头结点不存储有...原创 2019-11-23 22:28:30 · 2394 阅读 · 0 评论 -
数据结构(不定长顺序表)
数据结构顺序表顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。而在顺序表中有定长顺...原创 2019-11-22 16:37:16 · 569 阅读 · 0 评论 -
数据结构(定长顺序表)
数据结构顺序表:顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。而在顺序表中有定长...原创 2019-11-19 13:05:09 · 346 阅读 · 0 评论