
算法
hui1140621618
这个作者很懒,什么都没留下…
展开
-
冒泡排序BubbleSort
冒泡排序的原理: 将临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束。 代码实现: public void bubbleSort(int[] nums, int n){ int i = 0, j = 0; for(i =原创 2017-03-20 17:11:06 · 417 阅读 · 0 评论 -
背包问题
题目: 给出n个物品的体积A[i]和其价值V[i],将他们装入一个大小为m的背包,最多能装入的总价值有多大? 思路: 采用动态规划法。V[N][W]表示到物品N在背包重量为W时的最大价值,则对于第i个物品,有两种情况: 第一种情况是A[i] 1. 计算放入物品i背包的最大价值 V[i-1][w-A[i]]+V[i-1] 2. 计算不放入物品i背包的最大价值 V[i原创 2017-03-22 13:24:07 · 242 阅读 · 0 评论 -
快速幂
快速幂的目的: 做到快速求幂。假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b)也即是O(n)级别。如果n非常大时,就会超时。而快速幂的时间复杂度为O(logn)。 快速幂的原理: 假设我们要求a^b,其实b是可以拆成二进制的,该二进制数第i位的权为2^(i-1),例如当b==11时, 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1,转载 2017-03-17 09:21:07 · 320 阅读 · 0 评论 -
二分查找算法
二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n)。但是二分查找算法更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为: 1.第一步查找中间元素,即5,由于5 2.寻找{6, 7, 8,原创 2017-03-17 09:48:26 · 198 阅读 · 0 评论