Algorithms
文章平均质量分 73
code_caq
机器学习、计算机视觉爱好者。
努力学习的新人!
展开
-
数据结构之链表-链表实现及常用操作(C++篇)
之前刷leetcode和剑指offer,看到很多需要用到链表的题,但没看到什么全面总结链表的文章,刚看到一篇总结链表的,很详细,特别好。出处:http://www.cnblogs.com/byonecry/p/4458821.html自己在此之上再进行了补充数据结构之链表-链表实现及常用操作(C++篇)0.摘要链表数据结构插入节点(单向链表)删除节点(单向链表)反向遍历链表找出中间节点找出倒数第k...转载 2017-04-01 11:44:50 · 2171 阅读 · 0 评论 -
几种查找算法总结与比较—顺序查找、有序查找、散列表查找
静态查找表:只进行查找操作的查找表 动态查找表:在查找过程中同时插入查找表中不存在的元素,或者删除已存在的元素 本文主要总结静态查找表 1.顺序表查找:从第一个或者最后一个记录开始,将每个记录的关键字与给定值比较,若相等则查找成功。 C++实现: for(int i=0;i { if(a[i]==key) return i; } return 0原创 2017-03-31 10:10:14 · 5150 阅读 · 0 评论 -
【智力题小结】
题目:一个桶里有100个白球,100个黑球,现在按如下规则取球: (1)每次从桶里拿出来两个球 (2)如果取出两个同色的球,就再放入一个黑球 (3)如果取出两个异色的球,就再放入一个白球 问:最后桶里剩下一个黑球的概率。 答:由规则易得,桶里的球的个数是奇数个,白球是偶数个 要么根据(2)取出两个白球;要么根据规则(3)取出了一黑一白,然后又放了原创 2017-03-31 14:25:25 · 919 阅读 · 0 评论 -
数组shuffle
题意:给数组洗牌,随机打乱顺序 思路: (1)遍历数组,每次随机生成一个坐标位置 (2)交换当前遍历位置和随机生成的坐标位置的数字,直到遍历到最后一个元素 C++实现: vector shuffle(vector &v) { vector res=v; for(int i=0;i { int t=rand()%res.size原创 2017-03-31 14:06:25 · 1432 阅读 · 0 评论 -
二叉树的前序、中序、后序遍历(递归与非递归)
本文主要总结二叉树的前序、中序、后序遍历,分为递归和非递归 (1)前序遍历:根→左→右 (2)中序遍历:左→根→右 (3)后序遍历:左→右→根 首先定义一个二叉树: struct BiTree { char val; BiTree *lchild; BiTree *rchild; }; 1.递归的方法原创 2017-03-31 13:55:39 · 377 阅读 · 0 评论 -
排序算法总结与C++实现(冒泡、简单选择、直接插入、堆、归并、快速)
几种排序算法时间复杂度和空间复杂度:1.冒泡排序 如果是从小到大排序,从最后一个元素开始,依次与前一个元素比较,比前一个元素小则交换。这样小的元素就浮到上面了。第二轮再从最后一个元素开始。 C++实现如下:(优化版,引入了flag)void bubbleSort(vector<int> &A) { bool flag=1; for (int j = 0; j < A.siz原创 2017-04-15 11:55:49 · 796 阅读 · 0 评论 -
STL之containers和<algorithm>-Reference
http://www.cplusplus.com/reference/ 使用的时候需要加上相应的头文件转载 2017-04-08 16:03:30 · 460 阅读 · 0 评论 -
二叉树深度优先(DFS)和广度优先(BFS)算法的非递归实现
广度优先(BFS):队列(先进先出) void BFS(Tree *root) { queue q; q.push; while(!q.empty()) { root=q.front(); //访问队首元素 coutdata; s.pop();原创 2017-03-31 11:29:05 · 1825 阅读 · 0 评论