[置顶] 快速排序

概述快速排序和归并排序一样也是分而治之策略的应用,基本思路是在数组中选取一个主元,以它为标准,遍历数组把小于它的数放在右边,大于它的数放在左边。递归上述过程直至有序。选主元选主元与划分子集这两个问题关乎快速排序的效率问题。选主元有很多方式,比如直接那第一个数作主元,那么当数组基本有序时那么时间复杂度就变成了O(n^2)了,而不是O(nlogn),也可以利用随机函数来选取下标,从而确定主元,但是ran...
阅读(153) 评论(0)

[置顶] 归并排序

概述归并排序是典型的分而治之策略的应用。主要是把一个数组分成若干个子数组进行从小到大的归并直至有序。下面所说的归并排序默认为2路归并排序。递归算法思想1)将数组平分为2等份,对这两个子数组进行从小大到有序归并。 2)递归对左半部分进行2路归并 3)递归对右半部分进行2路归并//一趟归并 void Merge(int* data,int* tmp,int left,int right,int r...
阅读(51) 评论(0)

[置顶] 堆排序

概述堆排序是利用堆的特性——堆顶元素一定是这个堆的最大值或者最小值,来使选择排序中每趟选择最值变得更加高效的思路。对于堆的相关内容移步我之前的博客:堆算法思想这里我们默认从小到大排序。 思路一:首先把通过数组构造一个最小堆,之后依次执行最小堆的删除操作直至最小堆为空则能得到一个从小到大的序列。对于时间复杂度一定是O(nlogn)。然而这个算法却带来了O(n)的空间复杂度。那么这显然是不划算的。故这...
阅读(39) 评论(0)

[置顶] 希尔排序

概述由于之前的冒泡排序和插入排序效率低平均复杂度为O(n^2),那么为了加快排序效率,希尔排序就这样被提出来了。只要思想是定义一个增量序列来反复对数组按增量分割成的子序列进行直接插入排序,直至基本有序。算法思想先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插...
阅读(35) 评论(0)

[置顶] 简单排序

概述排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。冒泡,插入这三种排序是最简单的排序,本文将主要讲解这两种排序思想。关与图解请参照如下地址的博客(是在不好画图,自己的图就是取自这篇博客):http://www.cnblogs.com/chengxiao/p/610300...
阅读(29) 评论(0)

[置顶] 散列表(下)——分离链接法

概述在我的上一篇博客散列表(上)——开放定址法 主要讲述了开放定址法的三种思路:线性探测法,平法探测法,双散列法三种思路,以及线性探测的代码实现。在这篇博客里,主要讲解第二中解决冲突的办法——分离链接法。分离链接法分离链接法的思想就是:将相应位置上冲突的所有关键词存储在同一个单链表中。主要办法是,构造以所有可能地址的为头的单链表数组。对于单链表的相关操作已经在之前的博客详细讲述了,如有需要请移步我之...
阅读(166) 评论(0)

[置顶] 散列表(上)——开放定址法

概述散列表,又称哈希表,hash表。散列表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于散列表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。设计思想Hash表采用一个映射函数 f : key —> address 将关键字映射到...
阅读(241) 评论(0)

[置顶] 拓扑排序

概述拓扑排序:如果图中从v到w有有一条有向路径,则v一定要排在w之前。满足此条件的顶点序列称为一个拓扑序。获得拓扑序的过程就是拓扑排序。有向无环图:一个有向图中不存在环,则称为有向无环图,简称DAG(Directed Acyclic Graph)。AOV网络:如果用DAG图买表示一个工程,其顶点表示活动,用有向边拓扑排序算法思想:从图从选择一个没有前驱结点的顶点输出,之后删除该顶点和所有以它为起始点...
阅读(84) 评论(0)

[置顶] 最小生成树算法(下)——Kruskal(克鲁斯卡尔)算法

概要在我的上一篇文章最小生成树算法(上)——Prim(普里姆)算法 主要讲解对于稠密图较为合适的Prim算法。那么在接下里这片文章中我主要讲解对于稀疏图较为合适的Kruskal算法。Kruskal算法Kruskal算法思想概述: 如果说Prim算法可以用让一颗小树慢慢长大,那么Kruskal算法也可以用一句话来总结:将森林合并成树。就是说它比Prim算法更直接的贪心,把每个顶点看成一棵树,那么恶...
阅读(125) 评论(0)

[置顶] 最小生成树算法(上)——Prim(普里姆)算法

概述最小生成树:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。根据定义可知对于一个有V个顶点的图来说,其最小生成树定包含V个顶点与V-1条边。反过来如果一个图的最小生成树存在,那么图一定是连通图。 对于最小生成树算法最著名的有两种:Prim算法与Kruskal算法。Prim算法Prim算法思想描述: Prim算法可以简单描述成...
阅读(206) 评论(0)

[置顶] 最短路径算法(下)——弗洛伊德(Floyd)算法

概述在这篇博客中我主要讲解最短路径算法中的Floyd算法,这是针对多源最短路径的一个经典算法。对于单源最短路径算法请详见我的另一篇博客:最短路径算法(上)——迪杰斯特拉(Dijikstra)算法弗洛伊德(Floyd)算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或有向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包。算法思想与过程(一)算法思想: Flo...
阅读(1953) 评论(6)

[置顶] 最短路径算法(上)——迪杰斯特拉(Dijikstra)算法

概述单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。最短路径的最优子结构性质描述为:如果P(i,j)={Vi….Vk..Vs…Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径。下面证明该性质的正确性。假设P(i,j)={Vi….Vk..Vs…Vj}是从顶...
阅读(451) 评论(0)

[置顶] 汉密尔顿回路问题

概述这是自己这学期算法课的实验作业。下面给出汉密尔顿图的定义。定义如下:对于连通图G=(V,E),V1,V2,…,Vn是G 的一条通路,且图中任意两个顶点都可达,若 中每个顶点在该通路中出现且仅出现一次,则称该通路为汉密尔顿通路。若 V1=Vn,则称该通路为汉密尔顿回路。算法描述1)初始化最佳路径数组best_path,同时初始化临时路径数组path与访问数组isvisited,设置最小长度min,...
阅读(369) 评论(0)

[置顶] 图的遍历(下)——邻接表

概述在我的上一篇博客:图的遍历(上)——邻接矩阵 中主要介绍了邻接矩阵的BFS和递归的DFS与非递归的DFS这3种遍历算法。在这篇博客我将主要叙述邻接表的以上3中遍历算法。首先来看看邻接表的表示方法。邻接表主要是针对稀疏图中邻接矩阵造成的空间浪费而提出的。下面我们来看看邻接表的表示。 1)无向图的表示 2)有向图 (说明:对于BFS,DFS的递归与非递归算法在这篇文章就不再重复,如有不了解...
阅读(139) 评论(0)

[置顶] 图的遍历(上)——邻接矩阵表示

概述图作为数据结构书中较为复杂的数据结构,对于图的存储方式分邻接矩阵和邻接表两种方式。在这篇博客中,主要讲述邻接矩阵下的图的深度优先遍历(DFS)与广度优先遍历(BFS)。广度优先遍历(BFS)BFS 算法的思想是:对一个无向连通图,在访问图中某一起始顶点 v 后,由 v 出发,依次访问 v 的所有未访问过的邻接顶点 w1, w2, w3, …wt;然后再顺序访问 w1, w2, w3, …wt 的...
阅读(124) 评论(0)

[置顶] 根据先序序列与中序序列构建二叉树

算法如下: 1)先在先序序列中找到根结点, 2)在中序序列中找到根结点位置,(可以将二叉树分为左子树和右子树) 3)用同样的办法构造左子树 4)用同样的办法构造右子树。//根据先序序列与中序序列构建二叉树 BinaryTree* Pre_In_Build(char* pre ,char* in, int size){ if(!pre || !in || size < 0){...
阅读(175) 评论(0)

[置顶] 从大到小输出二叉搜索树中键值不小于K的关键字

概要这是王道数据结构复习资料上的一道题。该书给出了递归算法,但是解析中对于非递归算法说使用非递归中序遍历的思路进行解答,这明显有错误。根据 二叉搜索树的性质可知,二叉搜索树的中序遍历是从小到大的序列,但是题意却是要从大到小输出,故需要采用右根左的遍历方式才能得到题意所要求的序列。算法如下:void FindK(BinarySearchTree* BST , int k){ stack<Bin...
阅读(280) 评论(0)

[置顶]

概念堆是一个用数组表示的完全二叉树,并满足以下两个特性: 1)父节点的键值总是大于或等于(小于等于)其子树上的任意结点 2)每个结点的左子树和右子树都是个堆。 如果父节点的键值总是大于等于任何一个子节点的键值,那么这时称之为最大堆或者大顶堆。反之,如果父节点的键值总是小于等于任何一个子节点的键值,那么这时称之为最小堆或者小顶堆。插入操作算法如下: 1)如果堆已满则不能插入 1)否则,把需要...
阅读(134) 评论(0)

[置顶] 平衡二叉树

由于平衡二叉树的前提是二叉搜索树,故关于二叉搜索树的内容请移步如下网址:http://blog.csdn.net/qq_30091945/article/details/77720865概念平衡因子:每个结点的平衡因子就是左右子树的高度之差,即可用如下公式表示:BF(T) = Hl-Hr 平衡二叉树:平衡二叉树可能是空树,也有可能是左右子树高度之差小于等于1的树,即平衡因子的绝对值小于等于1。...
阅读(168) 评论(0)

[置顶] 二叉搜索树

关于二叉树的基本操作请转到我的另一片博客: http://blog.csdn.net/qq_30091945/article/details/77531651概念Binary Search Tree,也可称为二叉搜索树,二叉排序树。 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它...
阅读(127) 评论(0)

[置顶] 并查集

并查集并查集是一种树形结构,又叫“不相交集合”,保持了一组不相交的动态集合,每个集合通过一个代表来识别,代表即集合中的某个成员,通常选择根做这个代表。初始化用数组来建立一个并查集,数组下标代表元素,下标对应的值代表父节点,全部初始化为-1,根节点为一个集合的元素个数,数组的长度为并查集的初始连通分量的个数。并查集要求各集合是不相交的,因此要求x没有在其他集合中出现过。算法如下://构造函数 UF(...
阅读(125) 评论(0)

[置顶] 2014年计算机联考真题——带权路径长度之和

思路如下: 利用层次遍历的思路,记录每层的层数level,对于该层的每个叶节点的带权路径长度 = data*(level-1) 算法如下: //求叶子节点带权路径长度之和 int WPL(BinaryTree* T){ BinaryTree* queue[100]; //构造容量足够大的队列 Binar...
阅读(126) 评论(0)

[置顶] 递归求序列最大最小值

这学期总算开了算法课了,不得不吐槽,大四上学期开这课,时间很尴尬。不多说了,第一节课老师留了道题,要求在一个递归函数里求序列的最大最小值。算法思路: 1)如果数组长度为1,则最大值与最小值相等 2)如果数组长度为2,则最大值与最小值各位其中一个。 3)如果数组长度大于2,那么采用二分策略,递归求前一半的最大最小值,与后一半的最大最小值,之后两两比较后的数组的最大最小值。代码如下:#includ...
阅读(173) 评论(0)

[置顶] 二叉树的构建及其遍历算法

概要二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有先、中、后,层次四种遍历方式,因为树的本身就是用递归定义的,因此采用递归的方法实现三种遍历,不仅代码简洁且容易理解,但其开销也比较大,而若采用非递归方法实现先中后3种遍历,则要用栈来模拟实现(递归也是用栈实现的)。下面先简要介绍先中后三种遍历方式的递归实现,再详细介绍先中后三种遍历方式的非递归实现与层次遍历。...
阅读(164) 评论(0)

[置顶] 栈的应用——表达式求值

概要表达式求值问题可以说是一个经典问题。具体思路就是首先把输入的中缀表达式转换为后缀表达式,然后再根据后缀表达式进行计算求值。中缀表达式转换为后缀表达式首先我们设定运算符在进栈前与进栈后的优先级: 首先在栈把“#”进行压栈,并在中缀表达式追加“#”。“#”作为结束标志。 对中缀表达式进行遍历,遇到数字进行输出到后缀表达式中 如果遇到运算符,把栈顶的元素(前者)的栈内优先级与即将入栈元素(后者)的栈外...
阅读(111) 评论(0)

[置顶] 单链表

现在已经进入专业课复习,王道的数据结构复习指导的第一个数据结构虽然是顺序表,但是过于简单,就不想写了。现在复习到链表,首先单链表数其他链表的基础。所以首先把单链表所有基础操作全部写一遍。包括建表,插入,删除,逆序,判断是否为空,合并等。我这里写的是带有头结点的单链表,头结点保存链表长度。代码如下:#include using namespace std;//带头结点的单链表类,...
阅读(214) 评论(0)

[置顶] 2013年计算机联考真题——确定主元

思路: 首先把主元 确定为A[0],并计数cnt=1。之后从下标为1开始遍历数组, 1.如果A[i] == A[0],cnt++ 2.如果不等,则如果cnt>0,cnt–,如果cnt<0,主元设定为A[i],cnt=1。 遍历结束后,再遍历一遍,确定主元的出现的次数,大于n/2,返回主元,否则返回-1代码如下:#include using namespace std;i...
阅读(142) 评论(0)

[置顶] 2011年计算机联考真题——寻找2个序列的中位数

思路: 设定两个升序序列分别为A与B,中位数分别为a和b。 1.如a=b,则即为所求,算法结束。 2.a#include using namespace std;int Median(int* A,int* B,int n) { int s1 = 0 , d1 = n-1, m1 = 0; int s2 = 0 , d2 = n-1, m2 = 0;...
阅读(136) 评论(0)

[置顶] 2010年计算机联考真题——一维数组循环左移

前记从七月份决定开始考研,中间由于听报告,回家复习数学和政治但无论一些时间。自己准备报考山东大学计算机技术的专硕,幸好是数学是考数学二,专业课一直有一门数据结构,这位我的复习节省了很多时间,不想数学一和统考的计算机基础综合的专业复习那么费劲。现在数据结构的复习完全是参照《王道考研系列——2018年数据结构考研复习指导》在复习。对于数据结构虽然到时候是手写算法,但是毕竟这是编程,对于算法能否正确实现并...
阅读(133) 评论(0)

[置顶] 社团活动学分管理系统

摘要之前忙于期末考试,所以没有时间把期末之前的课设写成博客。这次的课设虽然给定了可选题目,但是老师说做什么都可以。看见可选题目里有关于学分管理系统,考虑到时间紧迫,同时兼顾期末考试,故选择了这个社团学分管理系统。这里我也很感谢自己在校团委管理全校活动学分的同学为我这次课设提供了真实的学分数据。资源已经上传,如要下载请移步:http://download.csdn.net/detail/qq_3009...
阅读(358) 评论(0)

[置顶] 利用BP神经网络对语音数据进行分类

最近给学院老师的一篇论文帮忙改进BP神经网络,由于最后要发表论文,神经网络必须自己手写,搞了几个晚上,总算把基础的BP神经网络写出来,接下来再把老师的改进算法实现就ok了。(当然那代码不能公开了)我这里用的是《MATLAB神经网络43个案例分析》这本书中的语音数据集。(PS:神经网络的学习笔记没时间整理,马上蓝桥杯国赛,比赛结束回学校又是课设,这学期为了机器学习专业课也就是上课听听,还要火线复习把不...
阅读(1389) 评论(6)

[置顶] 《机器学习》(周志华版)——决策树

最近由于要写篇小论文而没时间更新博客。这篇决策树的笔记也参照了一些博客才完成的。下面是参照的博客链接:http://www.cnblogs.com/pinard/p/6053344.html http://www.cnblogs.com/pinard/p/6050306.html 本博客也只代表我对决策树的理解,如果有人想转载,请注明:http://blog.csdn.net/qq_300919...
阅读(241) 评论(0)

[置顶] 利用Logistic回归预测疝气病症的病马的死亡率

数据来源http://archive.ics.uci.edu/ml/machine-learning-databases/horse-colic处理过程由于该数据集存在30%的缺失,那么首先必须对数据集进行预处理,这里我把缺失值用每列的平均值来代替,同时把数据集没用的几列数据舍弃。之后利用sklearn库进行Logistic回归。代码与数据已经打包上传,如果有需要请移步:Python代码如下:#!/...
阅读(466) 评论(0)

[置顶] 基于属性值相关距离的KNN算法

该博客的观点来自于中国知网上由肖辉辉和段艳明执笔的论文《基于属性值相关距离的KNN算法的改进研究》。我只是因为最近做项目,老师分配任务研究KNN算法的改进而找到这篇论文,最后把论文中的算法代码。 下面是Python代码:#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/3/29 0029 19:15 # @Autho...
阅读(276) 评论(0)

[置顶] 《机器学习实战》——KNN分类算法

下面是《机器学习实战》中的KNN分类算法的笔记。自我觉得学了一段时间的机器学习,KNN可以说是公式推导最简单,最容易理解的一个算法了。资源已经上传,如果有需要请到如下链接下载:http://download.csdn.net/detail/qq_30091945/9794328 如果需要转载请注明:http://download.csdn.net/detail/qq_30091945...
阅读(482) 评论(0)

[置顶] 斯坦福机器学习笔记(二)

之前一直没时间整理这部分笔记,昨天通宵整理这部分笔记,同步网易公开课机器学习课程第四讲。资源我已经上传了,如果有需要的请转到下面的链接:http://blog.csdn.net/qq_30091945/article/details/60466622。 如果有人要转载请注明:http://blog.csdn.net/qq_30091945...
阅读(479) 评论(0)

[置顶] 《机器学习实战》--局部加权线性回归(LWR)

一 概述通常情况下的线性拟合不能很好地预测所有的值,因为它容易导致欠拟合(under fitting),比如数据集是 一个钟形的曲线。而多项式拟合能拟合所有数据,但是在预测新样本的时候又会变得很糟糕,因为它导致数据的 过拟合(overfitting),不符合数据真实的模型。局部加权回归(LWR)是非参数学习方法。 首先参数学习方法是这样一种方法:在训练完成所有数据后得到一系列训练参数,然后根据训...
阅读(584) 评论(0)

[置顶] 斯坦福机器学习笔记(一)

近期把斯坦福的机器学习课程视频翻来覆去的看,通篇阅读英文笔记。总算把线性模型吃的比较透了,现在会陆续的上传笔记。如果想要转载请注明:http://blog.csdn.net/qq_30091945...
阅读(1106) 评论(0)

[置顶] 《机器学习实战》——Logistic回归

这是《机器学习实战》中的第五章Logistic回归知识的整理以及自己的一些私人理解,之后运用原理对周志华的《机器学习》中的西瓜数据进行分类。(PS:因为上述两本书以及网易公开课上的斯坦福的机器学习视频都在同时看,所以博客可能有点杂。)最后希望给一起学习机器学习的同学一些帮助。资源也已经上传了,名称叫做Logistic回归笔记及代码。链接为:http://download.csdn.net/detai...
阅读(603) 评论(0)

[置顶] PAT乙级考试经验分享

对于刚过去2016年冬季PAT乙级考试给大家分享下一下经验: 1 报名就不用多说了,准备好官网上该准备的材料,选择离学校最近的考点最好。特别是自我介绍那一块尤其重要,毕竟那是关乎就业,个人建议写满1000字,对于代码是否让相关企业看到的选项,个人觉得全选最好,毕竟多一份机会。2 对于刷题,报名成功后必须保证刷适量的习题,尽量保证能够在考试前熟悉所有的知识点。我已经把PAT乙级考试截止到2016...
阅读(930) 评论(0)

[置顶] BP神经网络

利用BP神经网络解决蠓虫分类问题的Python代码如下:# -*- coding: utf-8 -*- """ Created on Tue Jan 17 12:22:53 2017@author: DaiPuWei """''' 神经网络模型---------BP神经网络,以蠓虫(Af,Apf两种类别)分类为例 利用梯度下降法为例 '''import pandas as pd im...
阅读(616) 评论(0)

[置顶] 时间序列(三)

修正指数曲线法Python代码如下:# -*- coding: utf-8 -*- """ Created on Sun Jan 15 15:36:15 2017@author: DaiPuWei """''' 时间序列修正指数曲线法,以收音机销售量为例 '''import pandas as pd import numpy as np import mathdef Check_Data(d...
阅读(257) 评论(1)

[置顶] 时间序列(二)

一次指数平滑法Python代码如下:# -*- coding: utf-8 -*- """ Created on Sat Jan 14 11:57:34 2017@author: DaiPuWei """ """ 时间序列一次指数平移法,以电器销售额的预测为例 """import pandas as pd import mathdef Index_Translation(data,alpha...
阅读(350) 评论(1)

[置顶] 时间序列(一)

Python代码如下:# -*- coding: utf-8 -*- """ Created on Fri Jan 13 11:20:10 2017@author: DaiPuWei """''' 时间序列简单平移法:以预测12月份的销售收入为例 '''import mathdef Forecast(profit,N,month): ''' 预测函数:profit为销...
阅读(401) 评论(1)

[置顶] 灰色系统预测GM(1,1)模型

预备知识 (1)灰色系统 白色系统是指系统内部特征是完全已知的;黑色系统是指系统内部信息完全未知的;而灰色系统是介于白色系统和黑色系统之间的一种系统,灰色系统其内部一部分信息已知,另一部分信息未知或不确定。 (2)灰色预测 灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序...
阅读(4378) 评论(1)

[置顶] 马尔可夫链

练习题 在英国,工党成员的第二代加入工党的概率为 0.5,加入保守党的概率为 0.4, 加入自由党的概率为 0.1。而保守党成员的第二代加入保守党的概率为 0.7,加入工党的 概率为 0.2,加入自由党的概率为 0.1。而自由党成员的第二代加入保守党的概率为 0.2, 加入工党的概率为 0.4,加入自由党的概率为 0.4。求自由党成员的第三代加入工党的概 率是多少?在经过较长的时间后,...
阅读(316) 评论(1)
277条 共14页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:79603次
    • 积分:3630
    • 等级:
    • 排名:第9356名
    • 原创:273篇
    • 转载:0篇
    • 译文:0篇
    • 评论:63条
    博客专栏
    最新评论