数据结构与算法
文章平均质量分 58
只睡四小时
事在人为。
展开
-
一文帮你弄懂散列是什么
什么是散列?我们先看这样一个问题:给出N个正整数,再给出M个正整数,问你M中出现的每个数是否在N中出现过。其中N,M<=10³。最直观的思路就是暴力枚举,先在M中挑一个数,然后和N中的数一一比较,比较完了之后再在M中挑第二个数,以此类推。但是这样的复杂度达到了O(MN),是不优秀的算法。不妨用空间换时间,让M个整数做为数组的下标建立数组。比如M个数分别为5,9,12,7,N个数分别为9,7,12,6。那么先建立bool数组hashtable[Maxn]={false},然后遍历9,7,12,6这原创 2021-09-08 16:23:25 · 2041 阅读 · 0 评论 -
算法刷题的基础(一)——必会的算法基础知识
一、应对算法刷题网站的输入要求1.不知道输入什么时候结束怎么办?比如:PAT 1002:读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。你根本不知道输入的正整数有多长,你该怎么办?法一:while……EOF型while(scanf("%d",&n)!=EOF){ ……}代码意思为:读取文件时没有读到文件末尾便一直循环。反复读入n,执行循环体的内容。scanf是通用的,字符串(%s)或数字(%d)都可以.如果只是字符串的话还可以用gets()和getchar原创 2021-09-08 16:21:06 · 241 阅读 · 0 评论 -
最全面!介绍一下数据结构最常见的几种框架
数据结构几种框架对于任何数据结构,其基本操作无非 遍历+访问,即增删查改。不同的数据结构存在的目的就是应用于不同的场景,使增删查改更有效率。遍历和访问分为线性的和非线性的。线性代表为数组,主要通过for/while迭代来实现,非线性代表为二叉树,主要通过递归来实现。现在交代一下数据结构的几种框架:数组遍历框架,典型的线性迭代结构:void traverse(int arr[]){ for (int i = 0; i < arr.length); i++) { //迭代访问arr[原创 2021-09-02 16:29:56 · 564 阅读 · 0 评论 -
直接插入排序算法分析c++
#`在这里插入代码片#include using namespace std;//直接插入排序//此处是升序,大的往后放void straight_insert(int *array, int length) {if (length < 1)return ;for (int i = 1; i < length; ++i) {int j = i - 1;int temp = array[i];while (j >= 0 && temp < array原创 2020-11-15 13:42:20 · 97 阅读 · 0 评论