![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
sea-lavender
困难是机遇
技术是靠积累的
展开
-
算法实例:斐波那契(Fibonacce)数列
斐波那契原创 2017-09-26 18:18:52 · 536 阅读 · 0 评论 -
找出数组中重复的数字
找出重复的数字原创 2017-11-13 23:18:11 · 642 阅读 · 0 评论 -
约瑟夫环(Josephuse)
时间复杂度是O(n); 空间复杂度O(1) int LastRemaining(unsigned int n,unsigned int m){ if(n<1||m<1){ return -1; } int last=0; for (int i=2; i<=n; i++) { last=(last+m)%i; } retu原创 2017-11-14 00:16:25 · 194 阅读 · 0 评论 -
剪绳子算法--动态规划法
使用动态规划法求解剪绳子问题,products中保存每一段的最优解int maxProductAfterCutting_sholution(int length){ if(length<2){ return 0; } if (length==2) { return 1; } if (length==3) { re原创 2017-11-20 10:48:31 · 1189 阅读 · 0 评论 -
二分查找法
基本方法 private static int rank(int key,int[] a){ int lo=0; int hi=a.length; while(lo<=hi){ //要查找的键要么不存在要么必然存在于a[lo....hi]d当中 int mid=lo+(hi-lo)/2;原创 2017-07-16 18:18:45 · 161 阅读 · 0 评论 -
排序:起泡排序法
第一种排序算法void bubbleSort(int a[], int n){ for(int i =0 ; i< n-1; ++i) { for(int j = 0; j < n-i-1; ++j) { if(a[j] > a[j+1]) { int tmp = a[j] ;原创 2017-11-15 11:52:11 · 2080 阅读 · 0 评论 -
排序: 插入排序算法
插入排序算法原创 2017-10-16 00:38:33 · 176 阅读 · 0 评论 -
高效率合并两个数组
问题: 两个有序数组,合并成一个有序数组,假设第一个数组空间足够容纳两个数组。 分析: 考虑到a数组很大,可以直接在a数组上进行合并,但是要讲究效率。如果单纯从前往后合并,那么效率会非常低,因为a数组后面的数字需要不停的移动。换一种思路,我们采用从后往前合并,首先计算出总长度,设置一个指针从a数组最后往前移动。 算法代码:#include <iostream> #include <cst转载 2017-12-11 15:44:29 · 2692 阅读 · 0 评论