算法
文章平均质量分 60
binary~
所有的努力最终都会绕个大圈回报给你。
展开
-
前缀和与差分算法
前缀和与差分一维前缀和一维差分二维前缀和二维差分一维前缀和先看一个例子,假如我们现在有一个数组arr[]={3,2,5,6,7,8,9,4,2}现在假如我们要想的得到区间 [ 3 , 6 ],上的数据和,那我们就需要遍历 [ 3 , 6 ] 这个区间进行求和。代码如下:#include <stdio.h>int main(){ int arr[] = { 3,2,5,6,7,8,9,4,2 }; int sum = 0; int l, r; scanf("%d%d",原创 2022-01-06 17:27:33 · 2861 阅读 · 4 评论 -
查找算法(2022年第一篇博客)
顺序查找算法顺序查找又叫线性查找,是最基本的查找技术,它的查找过程是:从表中的第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录;如果直到最后一个(或第一个)记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找不成功。代码:int Sequential_Search(int*a,int n,int key){ int i; for(i=1;i<=n;i++) { if(a原创 2022-01-01 02:03:25 · 658 阅读 · 0 评论 -
KMP匹配算法
字串的定位操作通常称为串的的匹配模式KMP算法朴素的模式匹配算法KMP模式匹配算法next数组的推导KMP算法代码KMP模式匹配算法的改进nextval数组的推导朴素的模式匹配算法假设我们要匹配下面的主串S=“goodgoogle”,中,找到T="google"这个字串位置,我们按朴素模式匹配算法需要下面几步1.从主串第一个位置开始,S与T的前三个都匹配成功,第四个匹配失败S:g o o d g o o g l e | | | !T:g o o g l e2.从主串第二个位置开始,重新开原创 2021-12-30 16:47:41 · 387 阅读 · 0 评论 -
八大排序——计数排序
@[TOC]计数排序1.概述计数排序:计数排序又称为鸽巢原理,是对哈希直接定制法变形应用,是一种稳定的算法,它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法,当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序。2.代码#include<stdio.h>#include<stdlib.h>#include<string.h>void C原创 2021-12-22 20:24:10 · 326 阅读 · 0 评论 -
数据结构——堆(堆排序)
1.堆堆的逻辑结构是一个完全二叉树堆的物理结构是一颗完全二叉树通过下标去实现父子节点关系leftchild=parent*2+1rightchild=parent*2+2就类似于下图1 .向下调整算法(以大堆为例)//向下调整算法(左右子树必须是大堆)void AdjustDown(int*a,int n,int root){ int parent=root; int child=parent*2+1; while(child<n) {原创 2021-12-20 23:40:21 · 624 阅读 · 0 评论 -
八大排序之选择排序
目录选择排序思想选择排序图解代码实现(初阶版)代码实现(加强版)代码实现(最终版)时间复杂度选择排序思想在所有数中选出最小的数放在前面,然后在剩下的所有数中选出最小值,放在前面,后面过程依次类推,直到只剩最后一个数,此时,排序已完成。选择排序图解代码实现(初阶版)//选择排序void selectSort(int* a, int n){ int i, j; for (i = 0; i < n; i++) { for (j ...原创 2021-11-30 22:04:57 · 613 阅读 · 0 评论 -
八大排序之归并排序
目录归并排序图解代码实现(递归)代码实现(非递归)归并排序图解代码实现(递归)void _MergeSort(int* a, int left, int right,int *ret){ int mid = (left + right) >> 1; if (left >= right) return; _MergeSort(a, left, mid, ret); _MergeSort(a, mid + 1, right, ret)...原创 2021-11-30 21:48:32 · 935 阅读 · 0 评论