随笔分类 -  数据结构与算法

摘要:求模逆的方法有好几种,这里介绍一个扩展欧几里德算法: 求A关于N的逆元B,即要找出整数B,使A * B mod N = 1 。如:17关于3120的模逆元素求解。 首先对余数进行辗转相除。 3120 = 17 × 183 + 9 17 = 9 × 1 + 8 9 = 8 * 1 + 1 8 = 1 阅读全文
posted @ 2019-12-31 11:10 hunterDing 阅读(15728) 评论(3) 推荐(2)
摘要:根据http://www.cnblogs.com/mengdd/archive/2012/11/30/2796845.html改编而来 堆的定义 n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。 情形1:ki <= k2i 且ki <= k2i+1 (最小化堆或小顶堆) 阅读全文
posted @ 2016-10-27 15:48 hunterDing
摘要:根据网络博客教程修改而来。 合并排序,就是通过将两个有序的序列合并为一个大的有序序列的方式来实现排序。合并排序是一种典型的分治算法:首先将序列分为两部分,然后对每一部分进行循环递归的排序,然后逐个将结果进行合并。如下: A. 分解,将待排序元素分成大小大致相同的两个子序列。 B. 求解子问题,用合并 阅读全文
posted @ 2016-10-26 13:52 hunterDing
摘要:递归的通用规则: 1 每一次函数调用都会有一次返回.当程序流执行到某一级递归的结尾处时,它会转移到前一级递归继续执行。 2 递归函数中,位于递归调用前的语句和被调函数具有相同的顺序。如打印语句 #1 位于递归调用语句前,它按照递归调用的顺序被执行了 4 次。 3 每一级的函数调用都有自己的私有变量。 阅读全文
posted @ 2016-10-26 13:50 hunterDing
摘要:我们生活中还有很多这样的例子,比如我们在吃桶装薯片的时候,要想吃掉最后一片,就必须把前面的全部吃完;再比如我们浏览网页时候需要退回到之前的某个网页,我们需要一步步的点击后退键。。栈的实现也很简单,只需要一个一维数组和一个指向栈顶的变量top就可以了。我们通过变量top来对栈进行插入和删除操作。 这种 阅读全文
posted @ 2016-10-01 18:22 hunterDing
摘要:本文从http://blog.csdn.net/ahalei/article/details/20904897改编而来。 现有一串加密过的数字,解密规则规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串 数的末尾,再将第5个数删除……直到剩下最 阅读全文
posted @ 2016-10-01 17:14 hunterDing
只有注册用户登录后才能阅读该文。
posted @ 2016-09-30 14:24 hunterDing
摘要:本文从http://www.cnblogs.com/lonelyxmas/p/3561938.html改编而来。 期末考试完了老师要将同学们的分数按照从高到低排序。小哼的班上只有5个同学,这5个同学分别考了5分、3分、5分、2分和8分,哎考的真是惨不忍睹(满分 是10分)。接下来将分数进行从大到小排 阅读全文
posted @ 2016-09-30 10:14 hunterDing
摘要:假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的 阅读全文
posted @ 2016-09-30 09:42 hunterDing