算法与数据结构
流苏丶丶
这个作者很懒,什么都没留下…
展开
-
算法与数据结构总结(一)
一、算法与数据结构的重要性为什么要学习算法和数据结构呢?许多人认为算法和数据结构和计算机网络以及操作系统一样脱离了实际的工作知识。其实不然,这些知识都是程序员的”内功修炼“,重要性我就不多哔哔了,熟悉这些知识可以让你写出性能更优的代码,锻炼你的思维逻辑能力等等。越是厉害的公司,越是注重考察数据结构与算法这类基础知识。相比短期能力,他们更看中你的长期潜力。二、数据结构和算法的概念从广义上讲,...原创 2019-04-15 20:27:25 · 537 阅读 · 0 评论 -
算法与数据结构总结(二)-------数组、链表概述
数组1.线性表(Linear List)。线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。2.连续的内存空间和相同类型的数据。正是因为这两个限制,才使得数组具有时间复杂度为O(1)的“随机访问”特点...原创 2019-04-17 14:41:18 · 149 阅读 · 0 评论 -
算法与数据结构(三)------栈和队列
栈1.先进者后出,后进者先出。方法:pop()出栈push()进栈peek()栈顶2.从栈的操作特性上来看, 栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。相比数组和链表,栈是更加受限制的,并没有任何优势。那为什么不直接使用数组或者链表呢?为什么还要用这个“操作受限”的“栈”呢?从功能上来说,数组或链表确实可以替代栈。但是,特定的数据结构是对特定场景的抽象,而且,数组或链表...原创 2019-04-18 10:34:48 · 143 阅读 · 0 评论 -
算法与数据结构(四)-----递归
递归只要同时满足以下三个条件,就可以用递归来解决。(1)一个问题的解可以分解为几个子问题的解何为子问题?子问题就是数据规模更小的问题。比如,前面讲的电影院的例子,你要知道, “自己在哪一排”的问题,可以分解为“前一排的人在哪一排”这样一个子问题。(2)这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样比如电影院那个例子,你求解“自己在哪一排”的思路,和前面一排人求解“自己...原创 2019-04-18 21:04:42 · 104 阅读 · 0 评论 -
算法与数据结构(五)------排序
时间复杂度为O(n²)的三种排序(1)冒泡排序//冒泡排序/* * 1.思路: 每次将数组剩余的数中最大的一个数排到最后 * 2.时间复杂度: 最好时间复杂度(原数组已排好序) O(n) * 最坏时间复杂度(原数组倒序) O(n²) * 平均时间复杂度 O(n²) * 3.空间复杂度: O(1) *...原创 2019-04-19 18:55:57 · 123 阅读 · 0 评论 -
算法与数据结构(五)------二分查找
文章目录概述局限性二分查找变式问题查找第一个值等于给定值的元素查找最后一个值等于给定值的元素查找第一个大于等于给定值的元素查找最后一个小于等于给定值的元素概述二分查找(Binary Search)算法是一种针对有序数据集合的查找算法,也叫折半查找算法。二分查找是一种非常高效的查找算法,时间复杂度仅仅为O(logn),这是一个非常“恐怖”的数量级,即便n非常非常大,对应的logn也很小。比如n...原创 2019-04-23 19:30:39 · 193 阅读 · 0 评论