![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 53
昂德森科技
因为热爱,所以拼搏。
展开
-
KMP算法的原理
kmp算法就是在主串里面快速地寻找出模式串的位置,之前的BF算法太过暴力以及会牵扯到回溯的问题大大浪费了已经匹配好的串。先来认清理解前缀后缀以及最长公共子缀例如串:ababca它的前缀:a,ab,aba,abab,ababc后缀:babca,abca,bca,ca,a最长公共子缀就是a例如串:abbaa前缀:a,ab,abb,abba后缀:bbaa,baa,aa,a最长公共子缀就是a例如串:abaab前缀:a,ab,aba,abaa后缀:baab,aab,ab,b最长公共子缀ab原创 2022-03-22 21:44:05 · 577 阅读 · 0 评论 -
冒泡与选择排序
冒泡排序:相邻元素两两比较,每轮可以确定有一个大的数字排在后面,主要是搞懂比较的轮数与比较的次数。第一轮确定1一个数字位置第二轮确定2个数字位置所以是n-1-i#include <stdio.h>#include <stdlib.h>#define n 10int main(){ int a[n]={1,3,2,4,6,8,7,5,10,9}; int i,j,temp; for(i=0;i<n-1;i++){原创 2021-08-16 11:52:48 · 58 阅读 · 0 评论 -
递归的理解
先看一个程序:#include <stdio.h>void fun(int a){ printf("aaa=%d\n",a); if(a>10) return; a++; fun(a); printf("bbb=%d\n",a);}int main(){ fun(1); return 0;}这个递归实现了递去,和归来。递归必须要有终止条件,递归和传统的循环是不一样的,我们打开一个函数就是打开一个层,传统的循环是不会造成内存泄漏的,但是递归会造成栈溢出,因原创 2021-08-16 10:45:05 · 99 阅读 · 0 评论 -
一文彻底了解红黑树
红黑树简介红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1972年发明,在当时被称为对称二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。红黑树具有良好的效率,它可在 O(logN) 时间内完成查找、增加、删除等操作。因此,红黑树在业界应用很广泛,比如 Java 中的 TreeMap,JDK 1.8 中的 HashMap、C++ STL 中的转载 2021-08-07 09:12:28 · 548 阅读 · 0 评论