龙空技术网

算法的乐趣01

快乐的小log 104

前言:

目前姐妹们对“算法的乐趣源码”大体比较着重,同学们都想要知道一些“算法的乐趣源码”的相关内容。那么小编也在网上网罗了一些有关“算法的乐趣源码””的相关知识,希望同学们能喜欢,朋友们快快来学习一下吧!

算法:	1.确定性,有穷性,可行性,输入和输出性	2.设计范式		贪心法,分治法,动态规划法,线性规划法,搜索和枚举法。	3:实现方法		顺序执行,并行执行(包括分布式计算),递归算法和迭代算法顺序执行求数组当中元素最大值:int getMax(int *arr,int size){	int max = *arr;	int i;	for(i=0;i<size;i++){		if(max<arr[i]){			max = arr[i];		}	}	return max;}关于循环:	int a[3][4];	for(i=0;i<3*4;i++){		int row = i%3;		int col = i%4;		a[row][col] = row+col;	}优美的递归:二叉排序树的搜索int FindNode(BiTree *T,int key){	if(T == NULL) return 0;	if(T->key == key) return 1;	return T->key > key?FindNode(T->left,key):FindNode(T->right,key);}尾递归是尾调用的一种特殊情况,也是递归结构的一种特殊形式。编译器一般都可以对尾递归进行优化(尾调用消除技术)直接利用当前函数的栈帧,将尾调用处理成循环的形式尾调用:是指一个函数里的最后一个动作是调用一个函数的情形,这个函数调用的返回值直接被当前函数作为返回值int FindNode(BiTree *T,int key){	BiTree *P = T;	while(T!=NULL){		if(T->key == key){			return 1;		}else if(T->key > key){			T = T->left;		}else {			T = T->right;		}	}	return 0;}递归结构使用的函数递归调用,会增加任务的栈空间使用,用递归方法解决问题的规模受系统栈空间的约束,除此之外函数调用时的参数入栈和出栈也会降低算法的效率分支和跳转	闰年: ((year%4==0) && (year%100!=0)) || (year%400 ==))过长的多分支结构常被视为软件当中的不良结构。违背了OCP原则(开放,封闭原则)环形队列demo:一致性处理,包括函数表	对队尾指针移动的处理:rear = (rear+1) % N	如果不采取对N取模,则每次指针移动时都要做是否已经达到表尾的判断处理算法实现与数据结构	逻辑结构:		线性结构,关联结构(集合,映射),树形结构,图形结构	线性表:		数组,链表,栈,队列是四种最常见的线性表	数组:		访问方式:下标访问		查找无开销,插入和删除需要大量移动元素。		查找元素:O(n) if 数组有序  二分查找 O(logn)	链表:		适用于线性表的长度不确定的场合。		两个域构成:数据域 and 指针域		易于插入和删除,查找困难。		优势:链表长度可以动态增长,比数组具有很大的优势	表头结点的好处:		1:无论链表是否为空表,始终有一个能标识链表的头节点,可以用一致性处理空链表和非空链表		2:对链表进行插入,删除和遍历操作时,不需要对数据元素的首节点和中间节点做差异化处理,对每个结点的操作可以做到一致性

标签: #算法的乐趣源码