![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
wangchenggong1988
这个作者很懒,什么都没留下…
展开
-
分治、贪心、回溯、动态规划四种算法思想的比较分析
是多阶段决策问题吗?可以通过局部最优解得到全局最优解吗(能否用贪心算法)?是否有后效性问题(能否改为动态规划)?原创 2022-10-11 09:29:36 · 504 阅读 · 0 评论 -
归并排序及其扩展
归并排序、小和问题、逆序对问题原创 2022-08-10 20:08:56 · 130 阅读 · 0 评论 -
递归行为的时间复杂度估算——master公式
master公式可以用来估算子问题数据规模一样的递归行为的时间复杂度原创 2022-08-07 22:25:59 · 98 阅读 · 0 评论 -
二分查找以及扩展
二分查找及其变式原创 2022-07-31 16:05:59 · 221 阅读 · 0 评论 -
位运算的一些经典题目
java中提供的基础位运算符有与(&),或(|),非(~),异或(^),左移)和无符号右移(>>>)除了位非(~)是一元操作符外,其它的都是二元操作符异或运算满足交换律和结合律,①0^N==N②N^N==0为什么右移有“有无”符号之别,而左移却没有?(留个尾巴,后续补充)......原创 2022-07-31 13:54:47 · 348 阅读 · 0 评论 -
一次接口性能优化的小结
尽可能减少数据库的查询次数,尤其要避免在循环中查询数据库对于关系型数据库:特殊情况下,尤其是牵涉到子查询、联接查询的sql,有可能拆开后的执行效率更高对于非关系型数据库(如redis):在key的个数较少时,mget的效率有可能不如逐一get的效率高对于读多写少的接口,性能瓶颈往往都在查询数据库上,但如果内存中的数据处理算法低效的话,也会成为瓶颈。需要避免内存中处理数据时的嵌套循环、多次循环。要选用合理的数据结构和算法来降低数据处理的时间复杂度。对多线程的使用及线程池的参数.原创 2022-03-29 12:38:38 · 1243 阅读 · 0 评论 -
记一次递归算法在项目中的应用
在生成签名时,json转化时字段没有保持顺序可能会导致客户端签名和服务端签名不一致,因此期望json转化时能支持顺序。考虑到json序列化时可能会存在嵌套结构,所以编写了以下代码,用递归算法解决了嵌套json的key排序问题 //对json排序 public Map<String, Object> getSortMapFromJson(JSONObject obj){ String[] arr = obj.keySet().toArray(new String[]{}); Arra原创 2020-09-29 14:09:52 · 185 阅读 · 0 评论 -
面试中常问到的称小球问题
有9个小球,大小和形状完全相同,其中有一个球比其他球重,提供一个天平,问:为了保证能把较重的那个球找出来,至少需要称量几次?相信大家可能都遇到过这种问题,常作为面试时的智商题进行考察。现对此问题进行研究,用程序展现出了计算该问题的方法,如下:public class TestWeightingBalls { private static int count = 0; publ原创 2013-09-05 15:13:10 · 1213 阅读 · 1 评论 -
两种删除去重复记录的sql写法
假如有一个员工表emp,只有Id和name两列,主键Id为整数类型,name为字符串(可能重复)。现需要把那些name重复的记录删掉(只保留其中一条)可以采用以下两种种写法实现:①在子查询中找出同名记录中的最小Id,保留该记录,删掉其他记录;delete from emp e1 where e1.id > (select min(e2.id) fro原创 2013-09-07 11:56:30 · 1374 阅读 · 1 评论 -
理解数据结构和抽象数据类型
这两天在看一本介绍数据结构的书,叫《数据结构从应用到实现(java版)》,感觉挺不错的。刚刚看了第二章"数据结构概观",总结一下学习成果,很多话就是摘自书上的。 1.什么是数据结构?百度百科上查过了,是没有标准的定义的,存在不同的表述。 本书称“数据结构是数据组件的汇集或集合,这些数据组件一起构成了一个有意义的整体”,而“数据组件本身也可以是数据结构”。这是我想到了马克主义哲学原创 2012-05-15 15:33:28 · 1193 阅读 · 0 评论 -
java中的数据结构---栈、队列和树的实现
正文:数据结构――栈、队列和树 原文地址:http://www.alixixi.com/ePrint.asp?from=dev&id=12986开发者可以使用数组与链表的变体来建立更为复杂的数据结构。本节探究三种这样的数据结构:栈、队列与树。当给出算法时,出于简练,直接用Java代码。栈栈是这样一个数据结构,其数据项的插入和删除(获取)都只能在称为栈顶的一端完成。因转载 2012-05-08 16:14:06 · 2276 阅读 · 0 评论 -
一道小算法题的思考
编写程序,把一个n个元素的集合{1,2,3,…,n}中的所有m个元素的子集用字典顺序列出来。例如, {1,2,3,4,5}中3个元素的子集为:{1,2,3},{1,2,4},{1,2,5},{1,3,4},{1,3,5},{1,4,5},{2,3,4},{2,3,5},{2,4,5},{3,4,5}【第一次尝试:两层for循环】觉得应该是两层for循环,外层控制集合的生成次数,因为根据原创 2011-11-24 22:52:26 · 1262 阅读 · 1 评论