
算法
Sumpon
LNTU软件工程本科大三在读。喜欢算法,前端相关技术,java。励志成为一名全干工程师!
展开
-
几种基础排序算法
1、选择排序选择排序是一种直观简单的排序算法,它每次从待排序的数据元素中选出最小(或者最大)元素存放到序列的起始位置,直到全部待排序的数据元素排完。注意,选择排序并不是稳定的排序。void selectsort(int arr[ ], int length){ for(int i = 0; i < length; i ++) { int min = i; for(int j = i + 1;j < length; j ++)原创 2021-11-16 16:19:37 · 864 阅读 · 0 评论 -
求最大异或对
利用异或+前缀+字典树其实来说,一个整数,是可以转化成为一个32位的二进制数,而也就可以变成长度为32位的二进制字符串.例题:#include<iostream>#include<algorithm>using namespace std;const int N = 100010;int a[N], son[N * 31][2]; // 在trie树中 二维数组son存的是节点的下标 .原创 2021-11-14 10:17:33 · 710 阅读 · 0 评论 -
什么是KMP算法及其应用(附算法模板)
1.什么是KMP算法?KMP其实是一种高效的字符串匹配算法,用来在主字符串中查找模式字符串的位置。对暴力的那种一一比对的方法进行了优化,使时间复杂度大大降低至O(n)为了方便理解下面的内容,我将定义一些概念方便大家理解:1、s[ ]是模式串2、p[ ]是模板串3、“非平凡前缀”:指除了最后一个字符以外,一个字符串的全部头部组合。4、“非平凡后缀”:指除了第一个字符以外,一个字符串的全部尾部组合。(5、“部分匹配值”:前缀 和 后缀的最长共有元素的长度。6、next...原创 2021-11-08 20:31:08 · 2021 阅读 · 0 评论 -
什么是差分及其用法
差分:类似于数学中的求导和积分,差分可以看成前缀和的逆运算。差分数组:首先给定一个原数组a:a[1], a[2], a[3],,,,,, a[n];然后我们构造一个数组b : b[1] ,b[2] , b[3],,,,,, b[i];使得 a[i] = b[1] + b[2 ]+ b[3] +,,,,,, + b[i]例如:a[0 ]= 0;b[1] = a[1] - a[0];b[2] = a[2] - a[1];b[3] =a [3] - a[2];.....原创 2021-11-08 19:10:28 · 15301 阅读 · 1 评论 -
什么是前缀和及其使用方法
什么是前缀和?简单来说:我们有一个数组x和它的前缀和数组y,他们满足以下公式。y 0 = x 0y 1 = x 0 + x 1y 2 = x 0 + x 1 + x 2...即 y[n]=x[1]+x[2]+...+x[n]。下面是一个实际例子:得到的结果就是一维前缀和一维前缀和一维前缀和的得到很简单,也很好理解,上面的例子就是一维前缀和。我们只需要遍历的时候一直把之前计算的和 加上自己就能得到当前的和。for (i=1; i<=n; i++) {原创 2021-11-07 21:00:20 · 1813 阅读 · 1 评论 -
归并排序(含算法模板代码)
什么是归并排序?原创 2021-11-05 20:14:41 · 164 阅读 · 0 评论 -
快速排序算法(含算法模板代码)
什么是快速排序?快速排序是一种基于分治的思想,通过一趟排序,把要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快排的思维图:算法模板void quick_sort(int q[], int l, int r) //其中l表示左边的指针,r表示右边的指针;{ if (l >= r) return; in...原创 2021-11-05 19:55:34 · 158 阅读 · 0 评论