YinShiJiaW的博客

一个平凡人的成长记录

python中的元组与集合

元组 一个元组由几个被逗号隔开的值组成,例如 >>> t = 12345, 54321, 'hello!' >>> t[0] 12345 >>> t (12345, 543...

2019-06-19 18:06:39

阅读数 5

评论数 0

python中的深拷贝与浅拷贝

python中的浅拷贝与深拷贝 浅拷贝仅仅复制了容器中元素的地址 >>> L = [1, 2, 3] >>> M = ['X', L, 'Y'] >>> M ['x',...

2019-06-19 15:51:57

阅读数 6

评论数 0

python中的列表推导式

序言 python的列表对象是这个语言提供的最通用的序列,列表是一个任意类型的对象的位置相关的有序集合,它没有固定的大小。不像字符串,其大小是可变的,通过对偏移量进行赋值以及其他各种列表的方法进行调用,确实能够修改列表的大小。列表的形式如下 >>> A =...

2019-06-19 15:49:45

阅读数 6

评论数 0

python语言风格与设计哲学

python编码风格 对于Python,PEP 8 已经成为大多数项目所遵循的风格指南;它促进了一种非常易读且令人赏心悦目的编码风格。每个Python开发人员都应该在某个时候阅读它;以下是为你提取的最重要的几个要点: 使用4个空格缩进,不要使用制表符。 4个空格是一个在小缩进(允许更大的嵌...

2019-06-18 23:21:49

阅读数 9

评论数 1

常见排序算法

插入排序的基本思想: 1、从第一个元素开始,该元素可以认为已经被排序 2、取出下一个元素,在已经排序的元素序列中从后向前扫描 3、如果该元素(已排序)大于新元素,将该元素移到下一位置 4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 5、将新元素插入到该位置后 6、 重复步骤2~5 v...

2019-06-15 22:40:19

阅读数 13

评论数 0

优先队列的基本思想与简单实现

在我的一篇文章队列中,我简单地介绍了什么是队列,以及队列有哪些操作,一个数据结构能够被称为队列,它必须具备两个功能限制:数据只能在队尾插入,数据只能在队首删除。这两个功能限制注定了它只能顺序地处理队列里面的任务,但是有时候一个队列里的任务是有轻重缓急之分的,这样顺序处理显然是不合理的,我们要有选择...

2019-06-08 10:08:18

阅读数 23

评论数 0

散列表的基本思想

假设我们现在要存储五个人的身高。如下表 姓名 身高 张三 170 李四 178 王五 173 小明 175 小红 167 我们为这五个成绩创建了一个数组 typdef struct height_name{ char name[]; int height; ...

2019-06-07 11:27:32

阅读数 95

评论数 0

AVL平衡二叉查找树

概述 本文主要分成两部分: AVL平衡二叉树介绍 源代码递归逻辑分析 一、AVL(Adelson-Velskii-Landis)平衡二叉查找树介绍 为了简便起见,后面我们把AVL平衡二叉查找树简称为AVL树。 什么是AVL树,一句话:一棵AVL树是每个节点的左子树和右子树的高度最多相差1的二叉...

2019-06-02 17:55:00

阅读数 13

评论数 0

二叉查找树

二叉查找树在查找中有着重要的应用,一个二叉树变成一个二叉查找树后所具有的性质是:对于树中的所有结点,它的左子树中的所有关键字的值小于该结点的关键字值,它的右子树中所有关键字的值大于该结点关键字的值。这就是二叉查找树。自己脑补一下什么是二叉查找树,什么是普通二叉树。由于树的递归定义,通常是递归地编写...

2019-06-01 21:10:13

阅读数 6

评论数 0

栈的实现与操作

栈的实现也有两种方式:数组方式、和链表方式,我们前面知道表也是两种方式,但是由于表经常要在表的中间删除或插入数据,所以用数组实现不是一种很好的选择,我们通常采用结点实现。但是在栈中,这种情况发生了变化,栈是一种LIFO性质的线性表,它不允许在中间插入数据。而且事先知道数据数量的应用场景也经常出现(...

2019-05-30 14:08:59

阅读数 16

评论数 0

双向循环链表的操作

一、双向循环链表的实现,如果理解了前面的双向链表和循环链表,那么理解双向循环链表是一件很简单的事情,这里的实现是在我之前的双向链表的基础上,将尾结点的next指向头结点,将头结点的pioneer指向尾结点,就可以实现双向循环链表了。 typedef struct DNode { int d...

2019-05-26 14:20:36

阅读数 4

评论数 0

【每天一点算法】k-means聚类算法

该聚类算法的设计分为三大步:数据集准备;聚类中心设计与初始化;迭代训练; 其中迭代训练又分为两大步:聚类;聚类中心更新 下面是具体代码及其详解(实现语言为MATLAB或者Octave)注释为C/C++风格,复制的时候要改成matlab风格,或者直接删除 //prepare the data x =...

2019-05-26 11:44:58

阅读数 7

评论数 0

双向链表的操作

一、双向链表的创建 双向链表的结点结构体有两个指针,一个指向前向结点,一个指向后继节点,创建步骤和单向链表差不多 typedef struct DNode { int data; struct DNode *front; struct DNode *next; } DNo...

2019-05-24 09:40:31

阅读数 7

评论数 0

单向循环链表操作

循环链表的好处: 1、任何节点都可以做为头节点。 可以从任何节点开始进行链表的遍历。只要当第一个节点被重复访问时,则意味着遍历结束。 2、用于实现队列数据结构是很有帮组的。 如果使用循环链表,则不需要为了队列而维护两个指针(front以及rear)。只需要维护尾节点一个指针即可,因为尾节点的后向节...

2019-05-24 09:32:18

阅读数 5

评论数 0

单链表操作

一、创建一个链表 我们要准备三个指针:head,previous,pioneer,第一个头指针,链表被创建以后,它起着对链表的唯一标识作用,previous指针和pioneer指针用来在创建链表的过程中使用,具体使用方法,看下面代码 node *create_list(int n) { /****...

2019-05-24 08:39:33

阅读数 11

评论数 0

【每天一点算法】Floyd最短路径算法

Floyd最短路径算法是基于这样一个事实:从viv_ivi​到vjv_jvj​的最短路径总是先从v1v_1v1​沿着一条路到某一点viv_ivi​,再沿(vi, vj)(v_i,\ v_j)(vi​, vj​)到vjv_jvj​。而从v1v_1v1​到viv_i...

2019-05-21 20:03:55

阅读数 3

评论数 0

二级指针与数组指针是不一样的

今天早上遇到一个问题,我想向函数里面传送一个二维数组int Matrix[MAX][MAX]int \ Matrix[MAX][MAX]int Matrix[MAX][MAX],我采用的方法是二级指针,我当时的考虑是二维数组名的二级解引用是一个整数,整型二级指针...

2019-05-21 09:14:25

阅读数 7

评论数 0

【每天一点算法】基于梯度下降的多变量线性回归(我的第一个机器学习算法)

概述 学习了吴恩达老师的机器学习算法的前六章后,我初步认识了机器学习算法,总的来说就是最小化偏差,最小化偏差有多种方法,在课程中使用的是梯度下降法和正规方程法(最小二乘法),下面我就利用我学习到的知识来进行一次简单的学习算法设计 算法设计目标与所用语言 算法设计的目标是用一个二次假设函数来拟合一个...

2019-05-20 21:21:55

阅读数 4

评论数 0

队列

队列,又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。 -----------------------------------...

2019-05-18 23:09:36

阅读数 13

评论数 0

【每天一点算法】递归算法设计总结

今天被递归算法困扰了好久,感觉这真是个很神奇的算法,可以用那么简短的几行代码处理那么复杂的问题,下面就对其进行总结。 首先我们要来看几个经典的例子,这里只是介绍几个很简单的例子来简单理解,因为我觉得看博客的你一般都只是想快速了解,不要求深入

2019-05-17 22:01:12

阅读数 20

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭