数据结构
文章平均质量分 85
Scl_Diligent
平凡
展开
-
字符串匹配算法——BF算法、KMP算法
BF算法(暴力匹配算法):将目标串的第一个字符与模式串的第一个字符进行匹配。如果相等,则继续匹配下一个字符;如果不等,模式串回退到第一个字符再与目标串的第二个字符匹配(每次匹配错误,目标串移动一个,模式串从头开始)。时间复杂度:O(M*N);代码实现:int BF(char *str1,char *str2){ assert(str1 != NULL && s...原创 2018-11-14 00:03:28 · 482 阅读 · 0 评论 -
排序 - - - 插入排序(直接插入排序、希尔排序)
插入排序:基本思想:每次将一个待排序的元素,按其元素的大小插入到前面已经排好序的序列的适当位置,直到全部元素插完成为止。直接插入排序:基本思想:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。...原创 2019-01-20 11:37:55 · 414 阅读 · 0 评论 -
排序 - - - 交换排序(快速排序、冒泡排序)
交换排序:通过排序表中两个元素的比较,若与排序要求相逆(不符合升序或降序),则将两者交换。快速排序:基本思想:任取待排序序列中的某个元素作为标准(也称为支点、界点,一般取第一个元素),通过一次划分,将待排元素分为左右两个子序列,左子序列元素的排序码均小于基准元素的排序码,右子序列的排序码则大于或等于基准元素的排序码,即找到该元素在数组中顺序排序的位置。然后分别对两个子序列继续进行...原创 2019-01-21 17:22:37 · 1731 阅读 · 0 评论 -
排序 - - - 选择排序(简单选择、堆排序)
选择排序:基本原理: 将待排序的元素分为已排序(初始为空)和未排序两组,依次将未排序的元素中值最小的元素放入已排序的组中。简单选择排序:简单选择排序的基本过程为:(1)在一组元素R[i]到R[n]中选择具有最小关键码的元素(2)若它不是这组元素中的第一个元素,则将它与这组元素中的第一个元素对调。(3)除去具有最小关键字的元素,在剩下的元素中重复第(1)、(2...原创 2019-01-28 13:53:40 · 579 阅读 · 0 评论 -
排序 - - -归并排序(二路归并)
二路归并排序:基本思想:将两个有序表合并成一个有序表。(将下列两个已排序的顺序表合并成一个已排序表。顺序比较两 者的相应元素,小者移入另一表中,反复如此,直至其中任一表都移入另 一表为止。)二路归并排序的基本思想是将两个有序表合并成一个有序表。给定排序码46,55,13,42,94,05,17,70,二路归并排序过程为://将两个有序序列合并void ...原创 2019-01-30 19:15:53 · 1893 阅读 · 0 评论 -
二叉树 ——(创建与非递归遍历)
二叉树定义:二叉树是结点的有限集合,这个集合或者是空的,或者由一个根结点或两棵互不相交的称为左子树的和右子树的二叉树组成。特点:1)每个结点至多有二棵子树(即不存在度大于2的结点)2)二叉树的子树有左、右之分,且其次序不能任意颠倒两种特殊的二叉树:(1)满二叉树:一棵深度为k且有2k-1个结点的二叉树。(对树中结点按从上到下、从左到右的顺序进行编号)(...原创 2019-07-20 15:23:36 · 564 阅读 · 0 评论