
算法
天空灬之城
这个作者很懒,什么都没留下…
展开
-
Java常用的八种排序算法与代码实现
目录: 1.直接插入排序 2.希尔排序 3.简单选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 8.基数排序 1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列。 对转载 2017-04-18 12:05:05 · 620 阅读 · 0 评论 -
手把手教你<leetcode>中的回溯算法——多一点套路
是一个很强大的OJ(OnlineJudge)算法平台,其中不少题目都很经典。其中有一个系列的考察回溯算法,例如Combination Sum 系列 Subsets系列等。根据百度百科定义:回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件转载 2017-05-24 16:05:13 · 1005 阅读 · 0 评论 -
二分查找法注意事项
使用二分查找,必须要满足: 存储在数组中(不可以是链表); 有序排列 public class BinarySearch{ public static int BinarySearch(int [] list , int key ){ int low = 0,high = list.length -1; while( low //转载 2017-05-24 16:41:12 · 622 阅读 · 0 评论 -
01背包问题
#include #define N 6 #define W 21 int B[N][W] = {0}; int w[6] = {0,2,3,4,5,9}; int v[6] = {0,3,4,5,8,10}; /* 01背包问题 B(k,w) k->前k个物品¸w->剩下的空间 序号 重(w) 价格(v) 0 2 3原创 2017-05-17 16:31:47 · 303 阅读 · 0 评论 -
深入浅析动态规划算法
转载自:http://blog.youkuaiyun.com/baidu_28312631/article/details/47418773 动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现转载 2017-05-31 21:36:23 · 807 阅读 · 0 评论 -
程序员必知8大排序3大查找(三)
三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表(以后谈) 一、顺序查找的基本思想: 从表的一端开始,顺序扫描表,依次将扫描到的结点关键字和给定值(假定为a)相比较,若当前结点关键字与a相等,则查找成功;若扫描结束后,仍未找到关键字等于a的结点,则查找失败。 说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到就失败。很明转载 2017-07-01 10:20:49 · 321 阅读 · 0 评论 -
程序员必知8大排序3大查找(一)
程序员必知! 1、直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的。如此反复循环,直到全部排好顺序。 (2)实例 2、希尔排序(也称最小增量排序) (1)基本思想:算法先转载 2017-07-01 10:14:41 · 389 阅读 · 0 评论 -
程序员必知8大排序3大查找(二)
本文我们先把剩余的三大排序说完,然后讨论一下排序的稳定性问题,最后再总结一下排序的时间复杂度和空间复杂度。 (1到5见上篇) 6、快速排序 (1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。转载 2017-07-01 10:17:37 · 284 阅读 · 0 评论