【Bresenham算法画线】教程文章相关的互联网学习教程文章

二叉树遍历算法的改进【代码】【图】

二叉树遍历算法的改进二叉树的深度优先遍历算法都是用递归函数实现的,这是很低效的,原因在于系统帮你调用了一个栈并做了诸如保护现场和恢复现场等复杂的操作,才使得遍历可以用非常简洁的代码实现。二叉树深度优先遍历算法的非递归实现用用户定义的栈来代替系统栈,也就是用非递归的方式来实现遍历算法,可以得到不小的效率提升。二叉树深度优先遍历算法的非递归实现(1)先序遍历非递归算法要写出其遍历的非递归算法,其主要任务...

选择算法【代码】

伪代码:for i=2 to nmin=A[i-1]for j=i-1 to nif A[j]<minmin=A[j]A[i-1]=min 原文:http://www.cnblogs.com/Wanggcong/p/4705962.html

几种常见模式识别算法整理和总结

这学期选了门模式识别的课。发现最常见的一种情况就是,书上写的老师ppt上写的都看不懂,然后绕了一大圈去自己查资料理解,回头看看发现,Ah-ha,原来本质的原理那么简单,自己一開始仅仅只是被那些看似formidable的细节吓到了。所以在这里把自己所学的一些点记录下来,供备忘,也供參考。 1. K-Nearest NeighborK-NN能够说是一种最直接的用来分类未知数据的方法。基本通过以下这张图跟文字说明就能够明确K-NN是干什么的 简单来说...

排序算法之归并算法【代码】

/*本例拟在实现排序算法的归并算法,归并算法遵循分治法的思想归并算法:归并算法主要用来合并两个已经排好序的序列。用Merge(A,p,q,r)来实现合并,其中A代表数组,A[p,q]和A[q+1,r]A的两个子数组,且两个数组都已经排好序,归并算法就是将这两个子数组合并成一个排好序的数组并替代当前的数组A[p,r]。 */publicclass Merge {publicstaticvoid main(String[] args){int[] a = {1,2,3,4,5,7,9,11,6,8,10,12,13,14,15,16};merge...

常用的加密算法---数字摘要

数字摘要:数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定长度的值,它是一个单向Hash函数对消息进行计算产生的。摘要生成的过程:待摘要串-----> Hash函数-----> 摘要消息摘要的特点:1.无论输入的消息多长,计算出来的消息摘要的长度是固定的。例如:MD5 的为128个比特位,SHA-1的为160个比特位;2.一般只要输入的消息不同,对其产生的摘要消息也是不相同的,相同的输入必然会产生相同的摘要消息;3.由于消息摘要...

paxos算法学习总结【图】

核心思想分布式系统架构下如何让整体尽快达成一致观点,也就是多个不同观点收敛到一个观点的过程。难点可能会发生少数节点故障,但绝不是大面积故障,不然系统也没法正常工作。由于存在单点故障,因此不可能将观点由某一台机器的统一。共享内存达到一致性的方案不可取。因此,只能是点对点通信。一些概念算法中有三个角色Proposor,Acceptor,Learner算法有两个阶段,一是预提案,二是正式提案。正式提案的内容也就是观点,预提案不...

笔试算法题(21):将stack内外颠倒 & 判断扑克牌顺子【代码】【图】

出题:要求用递归将一个栈结构的元素内外颠倒;分析:本题再次说明系统栈是程序员最好的帮手,但递归度较高所以时间复杂度较大,可以使用空间换时间的方法(额外数组保存栈元素,然后逆向压入);第一层递归(清空栈元素,并使用系统栈保存):[1,2,3,4,5],栈顶元素为1,将1弹出之后,递归处理[2,3,4,5];第二层递归(将栈顶元素插入到栈底,同样使用系统栈保存):当[2,3,4,5]已经逆序之后,需要将1插入到栈底,所以将1作为参数传...

Java数据结构和算法(十二)——2-3-4树【代码】【图】

通过前面的介绍,我们知道在二叉树中,每个节点只有一个数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树。本篇博客我们将介绍的——2-3-4树,它是一种多叉树,它的每个节点最多有四个子节点和三个数据项。1、2-3-4 树介绍   2-3-4树每个节点最多有四个字节点和三个数据项,名字中 2,3,4 的数字含义是指一个节点可能含有的子节点的个数。对于非叶节点有三种可能的情况:  ①、有一个数...

常用Java排序算法【代码】

常用Java排序算法冒泡排序 、选择排序、快速排序 1package com.javaee.corejava;2 3publicclass DataSort {4 5public DataSort() {6// TODO Auto-generated constructor stub 7 }8 9publicstaticvoid main(String[] args) { 10int[] p = { 34, 21, 54, 18, 23, 76, 38, 98, 45, 33, 27, 51, 11, 20, 79, 11 30, 89, 41 }; 1213long start = System.currentTimeMillis(); 1415 DataSort.bubbleSor...

经典算法集锦

计数排序KMP算法Astar算法正在整理中......原文:http://blog.csdn.net/starcuan/article/details/18960881

算法-创建链表【代码】【图】

掌握数据结构和算法,尤其是链表,面试编程题经常考下面是用尾插法创建链表#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<malloc.h> #include <string.h>typedef struct node {int data;struct node *next; }Node;Node *LinkListCreat(int n)//链表创建函数{Node *p;Node *head,*rear;int i = 0; Node *Tal;head = (Node *)malloc(sizeof(Node));rear = head;rear->next = NULL;for (i = 0; i < n; i++){p = (Nod...

【排序算法】快速排序【代码】【图】

什么是快速排序?摘自漫画算法:同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮中只把1个元素冒泡到数列的一端,而快速排序则在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列的一端,比它小的元素移动到数列的另一端,从而把数列拆解成两个部分。这种思路就叫做分治法。每次把数列分成两部分,究竟有什么好处呢?假如给出一个8个元素的数列,一般...

TCP 组包和拆包算法【代码】

/************************************* 文件名: server.c TCP 组包和拆包实现算法作者: 马中海 QQ: 284358503 Email: zhonghaima001@163.com */ #include <stdlib.h> #include <sys/types.h> #include <stdio.h> #include <sys/socket.h> #include <linux/in.h> #include <string.h>#include <stdio.h> #include <stdlib.h> #include <string.h>#define BUF_SIZE 1024*5//#define TCP_PACK_DEBUG 1int main() {int nBufus...

C++ 算法 排序 从中间向左右两边依次递减排序【代码】

问题:现有一整型数组int input[]={...};如果数组元素个数是奇数,则以中间一个为最大,左边第一个次之,右边第一个再次之。。。如此排序后,最左边第二小,最右边最小如果数组元素个数是偶数,则以中间两个的右边那个为最大,左边第一个次之,右边第一个再次之。。。如此排序后,最右边第二小,最左边最小举例:奇数个如:input[]={3,4,8,1,9};排序后:input[]={3,8,9,4,1};偶数个如:input[]={3,4,8,1,9,6};排序后:input[]={1,4...

第二节、算法中的公平——队列【代码】【图】

1、栗子 学校食堂打饭、火车站买火车票、公交站等车,都要排队,先来的先上车,车满了,其余只能等下一班了。这对大多数人而言,都是相对公平的方式。在算法中,也有类似的公平——队列(queue)。队列遵循先进先出(First In First Out,简写FIFO)的规则,同栈的实现一样,队列的实现也有数组实现和链表实现两种方式。数组实现和链表实现没有绝对的优劣,平时接触数据比较多,所有首选数组实现啦。2、准备工作队列主要在结构上包...