算法
梅啉豆
写点自己的总结也不错~
展开
-
排序——简单选择排序
令A[0,n-1]为有n个数据元素的数组,将A排序为一个非降序的有序数组。简单排序思路:首先找到最小元素,将其放在A[0]中,然后在剩下的n-1个元素中找到最小的放在A[1]中,重复过程,直到最后2个元素中找到小的并将其放入A[n-2]中。 /** * 简单排序 */public void selectSort(int[] a){ int n = a.length原创 2018-01-23 08:07:13 · 243 阅读 · 0 评论 -
时间复杂度和空间复杂度
算法时间度 空间复杂度原创 2018-02-01 09:05:37 · 229 阅读 · 0 评论 -
排序——线性时间内排序
1.计数排序 2.基数排序原创 2018-01-24 08:53:05 · 240 阅读 · 0 评论 -
排序——归并排序
归并排序的一个核心的操作是将一个序列中前后两个相邻的子序列合并为一个有序序列。/** * a待合并两个区间[p..q] [q+1..r] * @param a * @param p * @param q * @param r */public void merge(Object[] a, int p,int q,int r){ Object[] b = new Obj原创 2018-01-24 08:52:54 · 209 阅读 · 0 评论 -
排序——选择类
1.简单选择排序 /** * 简单选择排序 * @param r * @param low * @param high */public void selectSort(Object[] r, int low, int high) { for(int k=low; k1; k++){//做n-1趟选取 int min = k; fo原创 2018-01-24 08:52:41 · 234 阅读 · 0 评论 -
排序——交换类
1.起泡排序(冒泡排序)/** * 起泡排序 * @param r * @param low * @param high */public void bubbleSort(Object[] r,int low,int high) { int n = high-low+1; for(int i=1; i<n; i++){ for(int j=l原创 2018-01-24 08:52:29 · 258 阅读 · 0 评论 -
排序——插入类
1.直接插入排序/** * 数组r的待排区间[low,high] * @param r * @param low * @param high */public void insertSort(Object[] r, int low,int high) { for(int i=low+1;i<=high;i++){ if(strategy.compar原创 2018-01-24 08:52:17 · 328 阅读 · 0 评论 -
查找——哈希
1.哈希表 2.哈希函数 3.冲突解决3.1 链地址法 3.2 开放地址法原创 2018-01-24 08:50:22 · 241 阅读 · 0 评论 -
查找——查找树
基于树的查找方法是将待查表组织成特定的树结构,并在树结构的基础上实现查找的方法。1.二叉查找树 1.1 查找算法基本查找方法是从根结点开始,递归的缩小查找范围,直到发现目标元素为止(查找成功)或查找范围缩小为空树(查找失败)。基本思想是: 若查找树不为空,将待查关键字与根节点元素进行比较——> 若相等直接返回根结点——> 否则判断待查关键字与根结点的大小——>原创 2018-01-24 08:50:07 · 744 阅读 · 0 评论 -
递归算法
递归的实现原创 2018-01-24 08:49:35 · 199 阅读 · 0 评论 -
查找——顺序查找 vs 折半查找
基于线性结构的查找主要就是顺序查找和折半查找1. 顺序查找特点是用所给的关键字与线性表中各元素的关键字逐个进行比较,直到成功或失败。基本思想是:在查找表的一端设置一个称为“监视哨”的附加单元,存放要查找的数据元素关键字。然后从表的另一端开始查找,如果在“监视哨”位置找到给定关键字,则失败,否则成功返回相应元素的位置2.折半查找 又称二分查找。 这种查找方原创 2018-01-23 13:01:33 · 1337 阅读 · 0 评论 -
算法其它笔记截图
笔记原创 2018-02-03 14:29:49 · 250 阅读 · 0 评论