一些算法的实现代码

1.斐波那契数列 Fibonacci
class fab{
        public static void main(String args[]){
// fab(47) int 溢出
                for(int i=0;i<47;i++)
                        System.out.print(fab(i)+" ");
                System.out.println();

        }
        public static int fab(int n){
                if(n==0) return 0;
                if(n==1) return 1;
                int fa=0;
                int fb=1;
                for(int i=1;i<=n/2;i++){
                        fa+=fb;
                        fb+=fa;
                }
                return n%2==0?fa:fb;
        }
}
2.合并两个有序数组
public static int[] combine(int arra[],int arrb[]){
        int lengtha=arra.length,lengthb=arrb.length;
        int result[]=new int[lengtha+lengthb];
        int i=0,j=0,k=0;
        while(i<lengtha){
            while(j<lengthb){
                if(arra[i]<arrb[j]){
                    result[k++]=arra[i++];
                }else{
                    result[k++]=arrb[j++];
                }
                break;
            }
            if(j==lengthb)
                break;
        }
        while(i<lengtha)
                result[k++]=arra[i++];

        while(j<lengthb)
                result[k++]=arrb[j++];

        return result;
    }
时间: 2024-10-16 14:15:28

一些算法的实现代码的相关文章

如何快速正确的写出各种分治算法的实现代码

分治算法大家都很熟悉,很多时候(比如ACM竞赛)当我们判断出一个问题可以用分治算法来解决的时候,却往往因为具体的问题的复杂性,难以很快理清思路,迅速正确地写出问题的分治算法. 因此,要想快速正确的写出分治算法的实现代码,就必须足够的认识分治算法.直接看结论 一.认识分治 在分治策略中,我们递归地解决一个问题,在每层递归中应用如下三个步骤: 1.分解(Divide):将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小. 2.解决(Conquer):递归地求解出子问题.如果子问题规模足够

各种排序算法的实现代码

#include"stdio.h" #include"malloc.h" #include"stdlib.h" typedef int KeyType; #define MAXSIZE 20 typedef struct { KeyType key; }RedType; typedef struct { RedType r[MAXSIZE+1]; int length; }SqList,* SQLIST; void play_choose(voi

解析C#彩色图像灰度化算法的实现代码详解

http://www.jb51.net/article/37067.htm public static Bitmap MakeGrayscale(Bitmap original)        {            //create a blank bitmap the same size as original            Bitmap newBitmap = new Bitmap(original.Width, original.Height);            //ge

搜索引擎--范例:中英文混杂分词算法的实现--正向最大匹配算法的原理和实现

纯中文和中英文混杂的唯一区别是,分词的时候你如何辨别一个字符是英文字符还是孩子字符, 人眼很容易区分,但是对于计算机来说就没那么容易了,只要能辨别出中文字符和英文的字符,分词本身就不是一个难题 1:文本的编码问题: utf8:windows下,以utf8格式保存的文本是一个3个字节(以16进制)的BOM的,并且你不知道一个汉字是否是用3位表示,但是英文适合ascii编码一样的 ascii:英文一位,中文两位,并且中文的第一个字节的值是大于128和,不会和英文混淆,推荐 unicode:中文基本是

Bug2算法的实现(RobotBASIC环境中仿真)

移动机器人智能的一个重要标志就是自主导航,而实现机器人自主导航有个基本要求--避障.之前简单介绍过Bug避障算法,但仅仅了解大致理论而不亲自动手实现一遍很难有深刻的印象,只能说似懂非懂.我不是天才,不能看几遍就理解理论中的奥妙,只能在别人大谈XX理论XX算法的时候,自己一个人苦逼的面对错误的程序问为什么... 下面开始动手来实现一下简单的Bug2避障算法.由于算法中涉及到机器人与外界环境的交互,因此需要选择一个仿真软件.常用的移动机器人仿真软件主要有Gazebo.V-rep.Webots.MRD

软考笔记第六天之各排序算法的实现

对于前面的排序算法,用c#来实现 直接插入排序: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序.第一趟比较前两个数,然后把第二个数按大小插入到有序表中: 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中:依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程.直接插入排序属于稳定的排序,最坏时间复杂性为O(n^2),空间复杂度为O(1).直接插入排序是由两层嵌套循环组成的.外层循环标识并决定待比较的数值.内层循环为待比较数值确定其最终位

图像旋转算法的实现

上一篇转载的文章(http://blog.csdn.net/carson2005/article/details/36900161)介绍了图像旋转的原理,这里给出代码实现,具体原理请参考上面的链接: 实现代码: void ImgRotate(cv::Mat imgIn, float theta, cv::Mat& imgOut) { int oldWidth = imgIn.cols; int oldHeight = imgIn.rows; // 源图四个角的坐标(以图像中心为坐标系原点) fl

Canny边缘检测算法的实现

Canny原理 Canny的原理就不细说了,冈萨雷斯的<数字图像处理>(第三版)P463~465讲解的比较清楚,主要就四个步骤: 1. 对图像进行高斯滤波 2. 计算梯度大小和梯度方向 3. 对梯度幅值图像进行非极大抑制 4. 双阈值处理和连接性分析(通常这一步与非极大抑制并行,详见下面的代码) 下面重点说一下非极大抑制. 非极大抑制 对一幅图像计算梯度大小和梯度方向后,需要进行非极大抑制,一般都是通过计算梯度方向,沿着梯度方向,判断该像素点的梯度大小是否是极大值.这里主要说一下方向的判断.

数组正负元素前后移动算法的实现(以0为分界线)

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump