
算法
文章平均质量分 83
绿野耕夫
一无所有时,还有编程
展开
-
快速排序算法
<br />typedef unsigned int Uint;// ====================================================// start:起始元素下标// end: 结束元素下标// ====================================================Uint MyPartition(Uint *p,Uint start,Uint end){ Uint x,temp,j,exchang原创 2010-12-02 16:31:00 · 527 阅读 · 0 评论 -
随机数生成方法
在用计算机编制程序时,经常需要用到随机数,尤其在仿真等领域,更对随机数的产生提出了较高的要求,仅仅使用 C 语言类库中的随机函数已难以胜任相应的工作。现实中,用投色子计数的方法产生真正的随机数,但电脑若也这样做,将会占用大量内存;虽然用噪声发生器或放射性物质也可产生真正的随机数,但操作不可重复。而用数学方法产生随机数则最适合计算机,这就是周期有限,易重复的“伪随机数”。(注:这里生成的随机数所转载 2012-09-15 15:40:39 · 1261 阅读 · 0 评论 -
字符串查找之模式匹配算法
模式匹配 问题: 假设有两个字符串string和pat,其中pat是将在string中查找的模式。确定pat是否在string中。 模式失配函数定义:令p = p0p1…pn-1是一个模式,则其失配函数f定义为:f(j) = i 为满足i < j且使得p0p1…pi = pj-ipj-i+1…pj的最大整数 如果i ≥ 0 -1原创 2012-09-22 10:50:57 · 1724 阅读 · 0 评论 -
回溯算法 (转)
引言 寻找问题的解的一种可靠的方法是首先列出所有候选解,然后依次检查每一个,在检查完所有或部分候选解后,即可找到所需要的解。理论上,当候选解数量有限并且通过检查所有或部分候选解能够得到所需解时,上述方法是可行的。不过,在实际应用中,很少使用这种方法,因为候选解的数量通常都非常大(比如指数级,甚至是大数阶乘),即便采用最快的计算机也只能解决规模很小的问题。对候选解进行系统检查的方法有多种,原创 2014-08-28 13:54:09 · 754 阅读 · 0 评论 -
双链表操作
dlist.h:#ifndef DLIST_H#define DLIST_Htypedef int Item;struct dnode { Item item; struct dnode *prev; struct dnode *next;};typedef struct dnode* dlist;void DL原创 2014-08-28 13:53:51 · 638 阅读 · 0 评论 -
单链表操作
1 #ifndef LIST_H 2 #define LIST_H 3 4 typedef unsigned int Item; 5 typedef unsigned char byte; 6 struct node 7 { 8 Item item; // 卫星数据 9 struct node * next; 10 };原创 2014-08-28 13:53:47 · 707 阅读 · 0 评论 -
基本排序算法
1 typedef int datatype; 2 3 inline void swap(datatype &a, datatype &b) 4 { 5 datatype tmp = a; 6 a = b; 7 b = tmp; 8 } 9 10 /***********************************原创 2014-08-28 13:53:43 · 620 阅读 · 0 评论 -
连通性问题--《C算法》学习笔记
连通性问题:快速查找算法,快速并集算法,加权快速并集算法,带路径压缩的加权快速并集算法原创 2015-02-16 11:27:40 · 1644 阅读 · 0 评论 -
求对数及筛选法求素数
/* 求对数函数 这个函数更重要的意义在于:若用a进制表示n, 则函数的返回值为表示n所需要的位数 复杂度: O(lgn)*/int loga(int n, int a){ assert(n >= 0); assert(a > 1); int i; for (i = 1; n >= a; i++, n /=原创 2015-03-01 14:49:26 · 813 阅读 · 0 评论 -
二叉树的创建及其遍历
https://www.github.com/wangzhijun_0224/AlgorithmStudy.git.h文件:#ifndef _DS_CHARPTER05_H_#define _DS_CHARPTER05_H_/********************************************************************************原创 2015-03-16 15:23:12 · 872 阅读 · 0 评论 -
二叉树
二叉树包含以下域:key域,left域,right域,p域。key域存储实际的数据。left,right,p分别指向左儿子,右儿子和父节点。二叉树中关键字的存储方式满足二叉查找树性质: 设x为二叉查找树中的一个节点。如果y是x的左子树中的一个节点,则key[y];如果y是x的右子树的一个节点,则key[x]。中序遍历树:INORDER-TREE-WALK(root[T]):原创 2012-08-23 22:58:09 · 738 阅读 · 0 评论 -
排序算法汇总--冒泡,插入,归并,快速,堆,计数,基数,桶排序
sort.cpp#include "stdafx.h"#include #define swap(x,y,t) t = x, x = y, y = t/***************************************************************************** 函 数 名 : BubbleSort 功能描述 : 冒泡排序,每次将最小原创 2012-09-02 21:56:18 · 1000 阅读 · 0 评论 -
二分查找学习札记
二分查找算法基本思想二分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明问题的方便,假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的元素进行比较,如果大于这个元素,就在当前序列的后半部分继续查找,如果小于这个元素,就在当前序列的前半部分继续查找,直到找到相同的元素,或者所查找的序列范围为空为止.用伪代码来表示, 二分查找算法大致是这个样子的:转载 2012-08-21 20:04:34 · 546 阅读 · 0 评论 -
计数排序和基数排序
<br />typedef unsigned int Uint;// ===================================================================// 计数排序// k: a中最大元素值+1// 对每一个输入元素x,确定出小于x的元素个数.则x的位置在元素个数+1处// 注意,排序后的数组b中,b[0]为空元素,实际排序好的数从b[1]开始// =========================================原创 2010-12-03 17:09:00 · 756 阅读 · 0 评论 -
桶排序算法
<br />1. 头文件<br />#ifndef LIST_H#define LIST_Htypedef int Item;struct node{ Item item; struct node *next;}; // 单链表节点// 链表函数int ListInit(struct node **list);int ListAddItem(Item item,struct node *list);int ListPopItem(Item *pitem,原创 2010-12-07 13:20:00 · 862 阅读 · 0 评论 -
同时找出最大值和最小值
<br />// ===================================================// 求数组A中前length个元素的最大值和最小值,存放在max和min中// length: 要计算最大值最小值的长度 length不能为0// ===================================================void MaxMin(int *max, int *min, int A[],int length){ int原创 2010-12-07 14:30:00 · 1232 阅读 · 0 评论 -
C实现单链表
#ifndef LIST_H_#define LIST_H_#include #define TSIZE 45 // 存放片名的数组大小struct film{ char title[TSIZE]; int rating;};typedef struct film Item; // 一般类型定义typedef struct node{ Item item; struct node *next;}Node; // 链原创 2010-11-17 21:36:00 · 3112 阅读 · 0 评论 -
C实现双链表
链表带以下功能:1. 初始化链表:创建一个哨兵节点,链表头指向哨兵节点;2. 添加元素:添加的元素加到链表尾部;3. 搜索元素:遍历链表,寻找第一个匹配的节点,若找到,返回该节点的指针,若找不到,返回0;5. 删除元素: 删除匹配的第一个节点。头文件:#ifndef D_LIST_H_#define D_LIST_H_typedef unsigned int word;typedef unsigned char byte;typedef int Item;struct node{原创 2010-11-22 13:28:00 · 3994 阅读 · 0 评论 -
用双链表实现的堆栈和队列
带哨兵元素,新节点添加到链表的头部。头文件:#ifndef STACK_H_#define STACK_H_#include "d_list.h"byte StackInit(List *plist,word length); // 堆栈初始化byte StackPush(List *plist,Item item); // 压栈byte StackPop(List *plist,Item *pitem); // 出栈byte原创 2010-11-22 21:43:00 · 3212 阅读 · 0 评论 -
堆排序以及最大优先级队列
<br />typedef unsigned int word;/**************************************堆排序算法***************************************/// 堆排序算法// 父节点,左节点,右节点下标(其实是下标+1)#define PARENT(x) ((x) >> 1)#define LEFT(x) ((x) << 1)#define RIGHT(x) (((x) << 1) +原创 2010-11-24 09:51:00 · 644 阅读 · 0 评论 -
插入、冒泡排序
插入排序伪代码:INSERTION-SORT(A) for j ←2 to length[A] do key ← A[j] ▷ insert A[j] into the sorted sequence A[1...j-1] i ← j-1 while i>0 and A[i]>key doA[I+1] ← A[i]原创 2012-04-21 21:40:17 · 907 阅读 · 0 评论 -
分治排序和霍纳规则求多项式
typedef unsigned int word;#define MAXSIZE 200word L1[MAXSIZE] ={ 0};word L2[MAXSIZE] = { 0};// ==================================================================// 分治排序法,递归版void merge(原创 2010-11-24 09:46:00 · 1106 阅读 · 0 评论 -
MathWorks机器学习简介-2
应用监督式学习何时考虑监督式学习监督式学习算法接受已知的输入数据集合(训练集)和已知的对数据的响应(输出),然后训练一个模型,为新输入数据的响应生成合理的预测。如果您尝试去预测现有数据的输出,则使用监督式学习。监督学习技术分类监督学习技术科分为分类或者回归的形式。 分类技术预测离散的响应。 回归技术预测连续的响应。常见分类算法逻辑回归:工作原理: 适合可以预测属于一个类或者另一个类的二元响应原创 2017-07-02 08:00:39 · 977 阅读 · 0 评论