最近在学习C++的STL和泛型编程的部分,其中涉及到很多词汇、术语。在这里做一些梳理,以便有条理性地去理解泛型编程的设计理念。 整体上来讲编程主要有两种理念: 面向对象的编程——侧重点是数据; 泛型编程——侧重点是算法; ...
分类:
编程语言 时间:
2019-03-25 01:07:06
阅读次数:
195
各种排序算法的Python实现 1.冒泡算法 : 冒泡排序可以把排序的变化过程想象成气泡从水中升起一样,非常的富有美感。谁有程序员没有审美的? 上面我们通过拿第一个数跟后面的依次比较,最后得出了最小数。如果我们用同样的方法从剩余的数组中拿出第二小的数,拿出第三小的数,这样我们不就完成了数组的排序么? ...
分类:
编程语言 时间:
2019-03-16 19:38:26
阅读次数:
206
算法学习——二分查找 注意点 1. 二分查找的前提是有序的数组 2. 建议使用[start,end)的区间寻找,符合规范 3. 使用的是递归法 递归的人口 递归的出口 private static int find(int[] temp, int start, int end, int x) { i ...
分类:
编程语言 时间:
2019-03-08 20:51:59
阅读次数:
204
排序算法稳定性 冒泡排序 思路:首先,列表每两个相邻的数比较大小,如果前边的比后边的大,那么这两个数就互换位置。就像是冒泡一样 代码关键点 趟数:n-1趟 无序区 依次类推就会得到排序结果。冒泡排序的效率还是很低的 代码示例 (这是基于顺序表实现的,链表还要关注一下节点) # 思路:列表中两个相邻的 ...
分类:
编程语言 时间:
2019-02-25 13:12:17
阅读次数:
357
栈 栈结构实现 栈的操作 具体实现 队列 具体实现 双端队列 操作 具体实现 小结: 栈和线性表的区别在于,栈注重的是怎么操作数据,线性表注重的是怎么存储数据 ...
分类:
编程语言 时间:
2019-02-23 17:09:16
阅读次数:
245
J我们知道学习数据结构与算法主要是解决一个「快」和「省」的问题,如何让代码执行更快、如何更节省空间。那么如何来考量你的代码的执行效率呢,我们总要有一个标准,这就是我今天所讲的复杂度分析,不夸张的说,掌握好复杂度分析,数据结构与算法你就掌握了一半,所有的算法都逃不出复杂度分析的范畴。 复杂度分析包括时 ...
分类:
编程语言 时间:
2019-02-18 17:26:18
阅读次数:
178
剑指offer算法学习总结 节选剑指offer比较经典和巧妙的一些题目,以便复习使用。一部分题目给出了完整代码,一部分题目比较简单直接给出思路。但是不保证我说的思路都是正确的,个人对算法也不是特别在行,只不过这本书的算法多看了几遍多做了几遍多了点心得体会。于是想总结一下。如果有错误也希望能指出,谢谢 ...
分类:
编程语言 时间:
2019-02-08 22:01:15
阅读次数:
192
1.为什么要学习算法 学习算法肯定是为了使程序更加的高效 2.简单使用例子 1.需求:查找部分商品类目信息并且分类返回 2.代码 首先我们查找了所有的商品,然后再将其类目查找了出来 但是我们在拼装这个json时候,我们采用了循环的方法,这个方法的时间复杂度是O(N^2),如果使用Map这个数据结构, ...
分类:
编程语言 时间:
2019-02-07 16:14:25
阅读次数:
226
9二、选择排序: 选择排序十分的简单和直观,其的工作原理是每一次从待排序的数组中选出最小(或最大)的一个元素,存放在序列的起始位置。因此,选择排序也是像我们这种萌新最容易写出来的排序算法。 排序步骤: 重复如此直到完成排序 下面举个栗子: 有一个数组其元素如下 5 1 4 3 2 6 7 0 9,其 ...
分类:
编程语言 时间:
2019-02-04 22:11:03
阅读次数:
226
三、插入排序: 插入排序是一种非常简单的排序,它的实现难度低于冒泡和选择。(我第一个for循环写出的排序就是插入排序)插入排序类似整理扑克牌,将每一张牌插到其他已经有序的牌中适当的位置。 基本思想: 插入排序由N-1趟排序组成,对于P=1到N-1趟,插入排序保证从位置0到位置P上的元素为已排序状态。 ...
分类:
编程语言 时间:
2019-01-28 22:28:55
阅读次数:
244