数据结构与算法
文章平均质量分 68
LoveWyf_
本人学识渊博 经验丰富,代码风骚、效率恐怖,c/c++、java、php无不精通,熟练掌握各种框架,深山苦练20余年,一天只睡4小时,千里之外定位问题,瞬息之间修复上线。可连续编程100小时不休息!学校不支持编程已辍学,家人不支持编程已断绝关系,老婆不支持编程已离婚!
展开
-
求最大公约数,二分查找法
最近买了两本有关数据结构和算法的书来研,打算好好重新学习一下,毕竟技术随着时间的推移是可能被慢慢淘汰的,而算法是那些技术实现的根基。算法是是计算机解决问题的方法,高效的算法能让计算机更快的解决问题。欧几里得算法求最大公约数:计算两个非负整数p、q的最大公约数:如果q=0,则最大公约数是p,否则,将p除以q,得到余数r,p、q的最大公约数等于p与r的最大公约数。因此,原创 2016-11-15 23:20:56 · 996 阅读 · 0 评论 -
位运算、时间复杂度、空间复杂度
位运算1、& 与运算都为1则是1,否则为02、| 或运算有一个1,就为1,否则是03、~ 非运算取相反数4、^ 异或运算相同为0,不同为注:1、对两个数进行位运算,需要将两个数转化为二进制:例如:a = 128的二进制形式为:10000000 b = 129的二进制形式为:10000001 a&b 1000000原创 2016-11-16 23:41:33 · 3380 阅读 · 0 评论 -
选择排序、插入排序、希尔排序
选择排序工作原理是从待排序的数据元素中选出最小(或最大)的一个元素,并与第一个数交换位置,然后选择剩下数组中最小的数,放到数组的第二个位置,一次类推。图解过程如下:选择排序特点是:1、运行时间和数组内容无关:我们会发现,即使是一个已经排序好的数组去使用选择排序,运行的时间与随机的数组排序时间居然一样长2、移动的数据少:数组的交换次数和数组大小是线性关系。原创 2016-11-30 22:25:18 · 534 阅读 · 0 评论 -
背包、队列和栈
背包(Bag)、队列(Queue)、下压栈(Stuck)是基础数据类型集合的三种类型,他们的区别在于删除或者访问对象的顺序不同。背包背包是一种不支持从中删除元素的集合数据类型,它的作用就是帮助用例收集元素并迭代遍历所有收集到的元素。具体实现:/** * 背包 * @author xiaoqi * * @param */public class Bag { p原创 2016-11-20 21:30:36 · 1243 阅读 · 0 评论 -
归并排序
归并排序,思想是将两个有序的数组归并成一个有序的数组。它的时间复杂度是NlogN。归并排序同时是分治算法的很好体现。因为归并的前提是左右两边数组是有序的,因此我们得从最小的每两个长度开始进行归并,然后每4个长度开始归并,以此类推。在较小长度的数组中,归并排序的效率无法证明与希尔排序的是快是慢,但是在较长长度的时候,是优于希尔排序的。首先先理解归并的方法: /原创 2016-12-06 00:28:50 · 890 阅读 · 1 评论 -
JAVA的深拷贝与浅拷贝
http://www.jb51.net/article/48201.htm如何选择 如果对象的属性全是基本类型的,那么可以使用浅拷贝,但是如果对象有引用属性,那就要基于具体的需求来选择浅拷贝还是深拷贝。我的意思是如果对象引用任何时候都不会被改变,那么没必要使用深拷贝,只需要使用浅拷贝就行了。如果对象引用经常改变,那么就要使用深拷贝。没有一成不变的规则,一切都取决于具体需求。转载 2017-10-11 16:49:34 · 218 阅读 · 0 评论