数据结构与算法
数据结构和算法的学习笔记
月光迟暮
菜鸡
展开
-
初级数据结构
参考《挑战程序设计竞赛2》初级数据结构包括栈(stack)、队列(queue)、表(list)栈栈中最重要的是指向栈顶的指针top// S[1000]是栈,top是指向栈顶的指针int top,S[1000];// push入栈void push(int x){ S[++top] = x;}// pop出栈int pop(){ return s[top--];}队列队列中最重要的是指向队头的指针head和队尾的指针tail// 结构体定义形式要记住typede原创 2020-11-01 20:26:56 · 233 阅读 · 0 评论 -
初等排序
初等排序初等排序包括插入排序、冒泡排序、选择排序,希尔排序插入排序将开头元素视为已排序,取出未排序部分的开头元素赋给变量v;在已排序部分,将所有比v大的元素向后移动一个单位;将已取出的元素v插入空位;即:排序部分不断扩大#include <stdio.h>#include <stdlib.h>//按顺序输出数组元素void trace(int A[], int N){ int i; for(i = 0;i < N;i++){原创 2020-11-01 19:57:58 · 235 阅读 · 0 评论 -
算法分析与设计基础_复习
第一章 绪论1.算法概念、欧几里得法求最大公约数(1.1)2.重要问题类型(1.3)、基本数据结构(1.4)1、算法是一系列解决问题的明确指令,也就是说,对于符合一定规范的输入,能够在有限时间内获得要求的输出。欧几里得法求最大公约数:两个不全为0的非负整数m和n的最大公约数记为gcd(m,n),代表能够整除(即余数为0)m和n的最大整数。欧几里得算法就是重复应用系列等式gcd(m,n)=gcd(n,m mod n)gcd(60,24) = gcd(24,12) = gcd(12,0) = 12原创 2020-06-30 16:46:46 · 3449 阅读 · 0 评论 -
山脉数组(二分法的应用)
本人算法太不简洁了,所以参照了甜姨的算法,不好意思是照抄。。。。。欢迎关注公众号甜姨的奇妙冒险(宣传一波为敬吧)我在此代码上就添加了一下自己的想法题目如下以下就是我对这道题的想法了,解题的关键是在于理解山脉数组的性质和二分查找的应用。山脉数组就是中间有一个点是最大值,山脉数组往左是递减,往右是递增,那么求所求target出现的位置和次数就应该在峰点的左右分别应用二分查找;关键点有两个...原创 2020-04-30 23:04:10 · 451 阅读 · 0 评论 -
初级DFS(邻接表实现)
(参考书籍:挑战程序设计竞赛2:算法与数据结构)DFS(Depth First Search)深度优先搜索,以能走多远就走多远为原则,是图最自然也最基本的搜索算法。需要用到的知识有:递归函数+栈(递归)+图的邻接矩阵;至于为什么是栈(递归),是因为有两种方法实现,一个使用栈,一个使用递归。基本方法是:从一个点依次遍历,若该点有下一个节点,继续访问,若该点没有下一个节点,则访问该点的上一个...原创 2020-04-27 08:20:20 · 941 阅读 · 0 评论