随笔分类 - 数据结构与算法
基础的数据结构和算法简介
摘要:冒泡排序(Bubble Sort) 冒泡排序只会操作相邻的两个数据元素。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换,就像气泡上升一样。一次冒泡会让至少一个元素移动到应该在的位置,重复n次,就完成了n个数据的排序工作。 冒泡排序空间复杂度为O(1),是原地
阅读全文
摘要:递归的定义 递归,就是在运行的过程中调用自己。 递归是一种应用非常广泛的算法(或编程技巧)。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。 举个例子:你带着女朋友去看电影,女朋友问:咱们现在坐在第几排啊?电影院非常黑,看不清,数不清,
阅读全文
摘要:如何理解队列? 就像排队买票,先来的先买,后来的人只能排在队尾,不允许插队。先进者先出,就是典型的队列。 我们知道,栈的基本操作有两个:入栈push()和出栈pop(),队列的基本操作也只有两个:入队enqueue(),在队列尾部放一个数据;出队dequeue(),从队列头部去一个数据。队列和栈一样
阅读全文
摘要:如何理解栈? 我们平时放盘子的时候,都是从下往上一个一个放,取的时候是从上往下一个一个取,不能从中间抽出。后进者先出,这就是典型的“栈”结构。从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许从一端插入和删除。 事实上,从功能上看,数组或链表确实可以替代栈,并且操作上更加灵活,但是,在使用时
阅读全文
摘要:数组需要一块连续的内存空间来存储,对内存要求比较高。如果我们申请一个一定大小的数组,当内存中没有连续足够大的空间时,即便内存剩余的总可用空间大于所申请的大小,仍然会申请失败。 链表恰恰不同,它不需要连续的内存空间,而是通过指针将一组零散的内存块串联起来使用。 链表有三种最常见的结构:单链表、双链表、
阅读全文
摘要:数组是一门编程语言中最基本的数据类型,也是一种最基础的数据结构。 数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表: 线性表就是数据拍成像一条线一样的结构,每个线性表上的数据最多只有前和后来个呢个方向。除了数组,链表、队列、栈等也是线性表结构。 连续的内存空间
阅读全文
摘要:数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更节省存储空间。只要讲到数据结构与算法,就离不开复杂度分析。 复杂度包括时间复杂度、空间复杂度。 时间复杂度分析: 时间复杂度的全称是渐近时间复杂度,表示算法的执行时间与数据规模之间的增长关系。 大O表示法: 示例代码
阅读全文
摘要:什么是数据结构?什么是算法? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,代表着用系统的方法描述解决问题的策略机制。 从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一种方法
阅读全文

浙公网安备 33010602011771号