算法
yefengzhichen
这个作者很懒,什么都没留下…
展开
-
两个数组求第k个数
遇到两个相似的题目,描述为:1、两个数组求第K大数题目描述给定两个有序数组arr1和arr2,在给定一个整数k,返回两个数组的所有数中第K小的数。例如:arr1 = {1,2,3,4,5};arr2 = {3,4,5};K = 1;因为1为所有数中最小的,所以返回1;arr1 = {1,2,3};arr2 = {3,4,5,6};K =原创 2016-08-23 16:25:52 · 1285 阅读 · 0 评论 -
搜索二叉树转换为双向链表
搜索二叉树转换为双向链表将一个搜索二叉树转换为双向链表,left执行下一个元素,right指向上一个元素,一种比较简洁的实现如下,除去测试代码,仅20多行代码:class Node { int value; Node left; Node right; Node(int value) { this.value = value; } }public class原创 2016-09-12 09:55:15 · 930 阅读 · 0 评论 -
二分查找各种情况大总结
二分查找多次刷题时遇到,虽然每次也能写对,但花了蛮多时间,没好好想过。而且网上的太多版本,并不是很简洁,而且边界条件变化情况太多,容易混淆,下面是自己对二分查找的一些思考和总结,尽量写得简单易懂。三种基本版本:1.1 二分查找原始版--查找某个数的下标(任意一个)在有序数组中查找某个数,找到返回数的下标,存在多个返回任意一个即可,没有返回-1。所有程序采用左右均为闭区间。典型代原创 2016-08-30 21:40:16 · 31986 阅读 · 15 评论 -
排序算法大总结
前面在看STL源码剖析时,发现自己对排序算法掌握得不好,遂花时间彻底的学习了一番,并做个全面的总结如下。一.直接插入排序插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。算法的伪代码:for j ←2 to n do key ← A[ j] i ← j – 1原创 2015-09-21 18:56:44 · 464 阅读 · 0 评论 -
一道汉诺塔的题目变形求解
今天在看算法题目时,做了一个汉诺塔的题目,描述如下:对于传统的汉诺塔游戏我们做一个拓展,我们有从大到小放置的n个圆盘,开始时所有圆盘都放在左边的柱子上,按照汉诺塔游戏的要求我们要把所有的圆盘都移到右边的柱子上,请实现一个函数打印最优移动轨迹。给定一个int n,表示有n个圆盘。请返回一个string数组,其中的元素依次为每次移动的描述。描述格式为: move from [lef原创 2015-07-22 22:36:43 · 2273 阅读 · 0 评论 -
算法学习-归并排序和二分查找
算法学习-归并排序和二分查找一:归并排序归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。算法步骤:1. 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2. 设定两个指针,最初位置分别为两个已经排序序列的起始位置3. 比较两个指针所指向的元素,选择原创 2015-05-07 20:22:08 · 2264 阅读 · 0 评论 -
排序算法-快速排序和堆排序
排序算法-快速排序和堆排序一:快速排序算法快速排序在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略原创 2015-05-06 21:23:15 · 853 阅读 · 0 评论 -
最下生成树以及并查集学习
一、并查集在准备学习最小生成树算法时,了解到需要用到并查集知识,所以先学习了一番,资料参考来自百度百科。在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。下面是根据一个例题来学习的,具体描述和实现代码如下:描述若某个家族人员过于庞大,要判断两个是原创 2015-06-15 10:56:54 · 426 阅读 · 0 评论 -
算法学习-最短路径算法
算法学习-最短路径算法Dijkstra算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。基本思想 通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。 此外,引进两个集合S和U。S的作用是记录已求出最短路径的顶点(以及相应的最短原创 2015-05-08 15:57:56 · 769 阅读 · 0 评论