数据结构与算法
HoiDev
这个作者很懒,什么都没留下…
展开
-
对称加密之简单加密
加密和解密是一个较为独立的软件领域,有时甚至运用到硬件知识。在做项目时,不时会遇到加密用户私隐信息的需要,例如加密码,然后在存到数据库。此处记录一下自己用过的简单加密。密钥这里需要说说加密的常用方式,一种是对称加密,一种是非对称加密。原创 2016-04-03 11:33:28 · 3576 阅读 · 0 评论 -
排序算法之堆排序
堆排序算法思想n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):(1)ki<=k(2i)且ki<=k(2i+1)(1≤i≤ n/2)即父节点小于等于左孩子和右孩子,当然,这是小根堆,大根堆则换成>=号。 - k(i)相当于二叉树的非叶子结点,K(2i)则是左子节点,k(2i+1)是右子节点 - 若将此序列所存储的向量a[1..n]看做是一棵完全二叉树原创 2016-10-10 14:18:38 · 337 阅读 · 0 评论 -
搜索算法之二分查找
Binary Search分治思想public class BinarySearch { public static int binarySearchRecursive(int[] array, int low, int high, int key) { // base cases if (high < low) r原创 2016-05-24 23:01:36 · 269 阅读 · 0 评论 -
排序算法之快速排序
快速排序和归并排序一样,快排也使用了Divide and Conquer。不同的是,merge sort在divide部分没做什么排序,真正的工作在combine阶段的merge()方法里;而quick sort则相反,真正的工作在divide完成,而在combine阶段,没做什么.快速排序属于内部排序,in place, Quicksort has a couple of other diff原创 2016-05-24 22:58:53 · 195 阅读 · 0 评论 -
排序算法之归并排序
Merge Sort典型的分治法思想算法,Divide and Conquer.divide-and-conquer将问题(original problem)分拆成规模比原来小,性质和原来相似的小问题(subproblems).最后,合并小问题解决的结果。由于这是一种典型的递归算法,每拆分一次,问题规模必须变得更小,而且要有最小的可解的小问题,即base case for subproblems.D原创 2016-05-24 22:52:40 · 279 阅读 · 0 评论 -
剑指Offer--二维数组查找
剑指Offer–二维数组查找题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 输入描述:array: 待查找二維数组target: 查找的数字输出描述:查到:true查不到: false原创 2016-04-25 22:43:58 · 258 阅读 · 0 评论 -
排序算法之插入排序
插入排序,在数据量大的时候,比冒泡要好。插入排序的思想用摸牌来比喻,会更容易理解:假设手头上已有1张牌摸张新牌,和手头上的牌逐个比较,从最后那张开始,小的话,手头上的牌移位新牌入序列所以: 步骤一:外层循环,从1开始,假设手头上已经有1张牌了 步骤二:摸一張牌,放在临时区; 步骤三:手头上的牌,从后往前遍历,与临时区的牌比较,手头上的大,那么移位原创 2016-04-03 22:29:44 · 313 阅读 · 0 评论 -
排序算法之选择排序
选择排序的思想是:从待排数组中选出最小值,放到最前面,然后循环。使用假设修正法 ,假设最小值在0这个位置原创 2016-04-03 22:05:02 · 189 阅读 · 0 评论 -
排序算法之冒泡排序
排序算法之冒泡排序原创 2016-04-03 21:44:54 · 260 阅读 · 0 评论 -
排序算法之桶排序
桶排序算法思想桶排序的思想是把[0,1)划分为n个大小相同的子区间,每一子区间是一个桶。然后将n个记录分配到各个桶中。因为关键字序列是均匀分布在[0,1)上的,所以一般不会有很多个记录落入同一个桶中。由于同一桶中的记录其关键字不尽相同,所以必须采用关键字比较的排序方法(通常用插入排序)对各个桶进行排序,然后依次将各非空桶中的记录连接(收集)起来即可。 最坏情况时间复杂度:当分布不均匀时,全部元素原创 2016-10-11 16:53:33 · 418 阅读 · 0 评论