随笔分类 - Algorithm and data structure
Tradition algorithms and data structure mainly using python
摘要:/// <summary> /// 快速排序中的切分 /// lIndex已经是基准值,i记录基准值的大小值的边界,j记录目前遍历的边界; /// i值必须从lIndex+1开始,因为基准值已经在lIndex位置了, /// i位置的值必须大于基准值,因为发现比基准值小的值,需要和i位置的值交换,
阅读全文
摘要:最小距离点对问题,顾名思义,即在一堆点中,寻找最小距离的点对。 暴力枚举的时间复杂度为O(n2),分治算法的时间复杂度为O(nlogn)。 以下解决的问题是: 生成任意多个随机点,找到最近的点对后,将这对点排除在外,继续寻找剩下的点的最近的点对,重复上述操作,直到把所有点排除完毕(个数剩下为1,也
阅读全文
摘要:逆序对计数问题是一个经典的算法问题,常见于计算机科学和数据结构领域。它的目标是计算数组中所有的逆序对的数量。逆序对是指数组中两个元素满足位置关系(i,j),且有 A[i]>A[j]. 它的应用有: 排序算法分析:逆序对可以用来衡量一个数组的有序程度。一个数组的逆序对数越多,它就越无序。对逆序对的分析
阅读全文
摘要:public class MergeSortLearn { /// <summary> /// 分治递归 /// </summary> /// <param name="oriArray"></param> /// <returns></returns> public static double[]
阅读全文
摘要:C# 链表 链表是节点的列表,节点包含两部分:值和链接,其中值部分用于储存数据,链接部分用于指向下一个元素的地址,是引用 类型。 单链表 public class LinkedList { private class Node { internal int value; internal Node
阅读全文
摘要:C#快速排序算法实现及循环条件细节思考 快速排序是一种分治思想的递归排序算法,其基本思想为: 在每一步中,挑选一个主元(pivot)出来,比如第一个元素 然后遍历除主元外的剩下的元素,把所有小于主元的元素放在主元左边,把所有大于主元的元素放在主元右边,那么此时该主元元素所在的位置就是正确的位置,因为
阅读全文
摘要:有向无环图 有向图是由顶点和有向边组成的,有向边由上游点和下游点组成,比如(u,v)表示一个有向边,其中u就是该有向边的上游点,v就是该有向边的下游点,入度是指一个顶点作为下游点所在有向边的个数,比如下图中,顶点1的入度是0,顶点3的入度是1,顶点6的入度是2,出度是指一个顶点作为上游点所在有向边的
阅读全文
摘要:如题: 在数组A[]中搜索给定值foundNum,其中length是A[]的长度 常规线性搜索 1.令索引i初始值为0,按次序依次赋值到n-1; (a)如果A[i]==foundNum,返回当前i; 2.返回-1;代表没找到 在常规线性搜索的第1步实际有两个测试:一个是判断索引是否越界,二是判断是否
阅读全文
摘要:汉诺塔的传说 相传在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面
阅读全文