C++基础
文章平均质量分 77
TheJianJiao
这个作者很懒,什么都没留下…
展开
-
字符串:KMP && 迪杰斯特拉算法
@TOCKMP 字符串算法kmp 算法的优势在于可以避免挨个顺序匹配,什么意思尼?对于暴力解法,就是当两个字符串中的元素开始不相同时,则从子串在主串起始匹配位置的下一个位置开始重新匹配;而 kmp 算法可以在不匹配的元素位置处,根据前缀表的值跳转到相应的位置接着匹配;例如:主串:aabaabaaf,子串:aabaaf,子串的前缀表为 [0,1,0,1,2,0],子串与主串匹配到第六位时不相同,此时看前一位,即第五位对应的前缀表2,所以,子串可以回到下标2位置接着匹配;通常前缀表集体-1;原创 2021-07-16 00:05:38 · 168 阅读 · 0 评论 -
字符串—KMP算法
一、KMP介绍:KMP算法由Knuth、Morris和Pratt 提出的字符串匹配的算法;MKP算法的核心则是前缀表的构建,关于前缀表如何去计算?很多资料在构建前缀表的描述中很是简略,对于初学者很难搞懂前缀表到底是怎么计算出来的。为什么在KMP字符串匹配算法中要使用前缀表?前缀表的作用就是记录当前元素及之前元素构成的子串中的最长相同前后缀的长度。字符串匹配暴力解法中需要将匹配串(长度为m)与主串(长度为n)进行每一个元素的比较。比如匹配串第一个元素和主串第一个元素比较,如果一样,同时后移一位进行比原创 2020-12-08 18:35:17 · 488 阅读 · 0 评论 -
C++基础:排序算法 — 选择排序
选择排序:大致思路是找出第i小的数字,并与原数组中第i位置的数字交换位置。循环N-1次,每次循环N-i-1次比较。时间复杂度O(n^2);空间复杂度O(1);图示:C++版本源代码:// selection sort 选择排序#include <iostream>using namespace std;void selectionSort(int num[],int len){ int smallest; for(int i = 0;i <.原创 2020-11-22 14:06:04 · 109 阅读 · 0 评论 -
C++基础:排序算法 — 插入排序
插入排序与冒泡排序的区别:冒泡排序是每次循环找出第i大的数字,循环N-1次则完成排序;插入排序就是默认第一个数字已排好序,从第二个数字开始与前面排好序的数字进行比较,插入进合适的位置,循环N-1次,完成排序;// Insertion Sort :插入排序// @author by JianJiao 2020年11月21日#include<iostream>using namespace std;void insertSort(int num[],int len){ f.原创 2020-11-21 15:31:51 · 102 阅读 · 0 评论 -
C++基础:排序算法 — 冒泡排序
**C++基础:排序算法(包括冒泡、插入、选择、希尔、快排、并归、堆排序、桶排序),快排也是面试中常问的基础算法题。虽然C++模板中提供了sort轮子,可以去直接使用,但是理解基础还是很重要的。****冒泡排序:大致思路就是将相邻的两个进行比较,符合条件就进行数据交换。每循环一次,就会将一个最大值(或者最小值)排好位置。N个数据需要进行N-1次循环,每次循环则有N-i-1次交换数据的机会。本文采用的是正序排列数值。**/* Bubble Sort 冒泡排序。*/#include <i原创 2020-11-20 19:43:18 · 147 阅读 · 0 评论