自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 2020-10-24,人生第一篇正式博客

2020年10月24日,属于这个世界的程序员节,当然也是属于自己的程序员节。从没想过会在CSDN博客上很正式的记录自己的所思、所学、所想。而且,这是第一次写文章用MarkDown。记得自己在CSDN上分享的之前的博客还是2015你2月3日写的源于C语言中的I/O函数。这篇博客我还记得当初是校招时候准备牛客网习题时候做的。自己的CSDN文章基本都是在读研最后一年学习算法导论时候写出来的。其中浏览最多的是下面这一篇。之前看到自己的文章也是共突破4万之后,当时竟然没有想着就这样写下去,觉得自己可能再写作分

2020-10-24 21:47:49 905 4

原创 KNN算法

from numpy import *import operatorfrom os import listdirimport osdef createDataSet():    group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])    labels = ['A','A','B','B']    return group, labelsdef cla...

2018-02-08 15:09:33 289

原创 [算法设计-字符的全排列问题]

代码:#includeusing namespace std;void swap(char &a, char &b){char temp = a;a = b;b = temp;}void func(char a[], int m, int n){if (m == n){for (int i = 0; i cout cout }el

2015-09-09 09:47:39 420

原创 【算法设计-最长公共子串与最长公共子序列】

先写代码,然后晚上上传过程图#includeusing namespace std;int LongestSubStr(char *str1, char *str2){int c[100][100];int i, j;int maxi, maxj;int n = strlen(str1);int m = strlen(str2);for (i = 0; i

2015-08-24 15:31:44 672

转载 怎样学习的总结

形成T型知识结构:专业知识尽可能深入,专业周边知识尽可能精炼。按照引用列表和作者深入阅读专业书籍。利用结论型/指南型书籍精炼阅读专业周边书籍。不断强化自己的按需学习能力。不一定非要阅读原版。读书并非多多益善。读书之前回答下面几个问题:这本书能给自己带来什么改变?自己是否需要这种改变?如果均为Yes,继续;如果有一个No,砍掉。

2015-07-12 21:48:27 432

原创 【算法设计-动态规划】钢条切割问题

问题:给定一段长度为n英寸的钢条和一个价格表pi(i=1,2,...,n),求切割钢条方案,使得销售收益rn最大。如果长度为n英寸的钢条的价格pn足够大,最优解可能就是完全不需要切割。方法一:递归从上而下把所有的全部搜索一遍int CUT_ROD(int p[],int n){if(n==0)return 0;int q=INT_MIN; for(int i=1;i

2015-05-26 08:48:16 1895

原创 【腾讯2015校园招聘技术类】第24题

题目:请设计一个函数可以把10进制的正整数转换为4位定长的36进制字符串36进制的规则为:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";举例说明:1="0001"10="000A"20="000k"35="000Z"36="0010"100="002S"2000="01JK"代码如下#includeusing name

2015-05-19 09:04:49 688

原创 【算法设计-二叉搜索树】二叉查找树的操作与实现

二叉查找树某个结点的左子树的值都比它小,其右子树的值比它大。要实现的主要操作代码实现#include  using namespace std;// BST的结点  typedef struct node{int key;struct node *lChild, *rChild,*parent;}Node, *BST;BST lvis=NULL

2015-05-16 10:17:28 1015

原创 【散列表-链接法解决冲突】利用链接法来解决冲突的散列表

~~~~(>_首先看一下这种散列表的结构:1.每个槽都令其为NULL,注意里面保存的都是指向Node的指针,而不是结点哦~2.然后我这里把链表的头结点,比如上图的k1,k5,k8的prior指针指向了T这个散列表,因为这样删除的时候会比较简单。3.注意删除链表中的第一个结点和尾结点时候的不同方法哦。。因为这个耽误了3天时间啊。。。好了,代码如下:#include

2015-05-14 07:57:09 899

原创 【散列表-直接定址法】含有卫星数据的直接定址法

数组T中的每个值都是指针,指针指向node结点,node结点中的元素为key,data。代码:#include#includetypedef struct Node{int key;int data;}Node;typedef struct T{  Node **table;//利用指针数组  int size;}T;void T_creat

2015-05-11 15:57:08 867

原创 【算法设计-散列表】散列表的直接定址法与位向量

位向量(bit vector)是一个仅包含0和1的数组。长度为m的位向量所占空间要比包含m个指针的数组少的多。用一个位向量来表示一个包含不同元素的动态集合。字典操作的运行时间为0(1)代码:#include  #include  #define INT_BIT 32    typedef struct {       unsigned int *table;  

2015-05-11 14:34:44 1038

原创 【c位操作】按位与,按位或

KEY |= (1 KEY &= ~(1 KEY ^= (1

2015-05-11 09:57:56 639

原创 【算法设计-二叉树遍历】二叉树的递归与非递归遍历方法

非递归方法利用一个堆栈来将处理。代码如下:#include#includetypedef struct  Node{  char data;  struct Node *lchild,*rchild;}*BitTree,Node;typedef struct Stack{ Node *key[20]; int top;}stack;voi

2015-05-09 09:00:01 502

原创 【算法设计-单链表的逆转】单链表逆转实现

1.在Θ(n)时间内将链表转置,而且只能需要少量的额外空间这里需要用3个指针使得q指向p然后依次后移。代码:#includeusing namespace std;typedef struct Node{int data;struct Node *next;}LinkList;LinkList* Create_End();void printLi

2015-05-07 20:32:19 5747 1

原创 【算法设计-链栈和链队列】链栈和链队列的实现

1.链队列。利用带有头结点的单链表来实现链队列,插入和删除的复杂度都为o(1)代码:#include#includetypedef struct Qnode{ int data; Qnode *next;}Qnode;typedef struct LinkQueue{Qnode *front;Qnode *rear;}LinkQueue;vo

2015-05-07 19:55:59 1074

原创 【算法设计-链表】单链表与双向循环链表

1.单链表代码:包含了尾插法,插入,删除操作。有头结点的单链表也是为了在第一个位置插入和删除时候容易,不需要另外讨论#include#includetypedef struct Linklist{ int key; Linklist *next;}Linklist;Linklist* create_end(){  Linklist *head=(Link

2015-05-06 14:42:27 605

原创 【算法设计-快速排序】随机快速排序算法

1.算法流程:但是为了减少算法因为初始数据可能已经部分按大小排序,导致算法复杂性会变成o(n2)进行了随机选择方法在random_partition中随机产生(p,r)之间的一个数字,然后交换A[i]与A[r]这样会使得快速排序算法的复杂性得到降低。代码实现:#include#include#define DataType int void FastSo

2015-05-04 11:00:23 1242

原创 【算法设计-优先队列】优先队列的实现与操作

优先队列是堆排序的一个具体应用。优先队列分为如下几个操作:1.INSERT(S,x)把元素x插入到优先队列中。2.MAXIMUM(S):返回s中具有最大关键字的元素。3.EXTRACT_MAX(S):去掉S中最大关键字的元素4.INCREASE_KEY(S,x,k):将元素x的关键字值增加到k,k是不小于x的元素。优先队列的应用:1.共享计算机系统的作业调度。最大优先队

2015-05-04 08:18:32 1962

原创 【算法设计-堆排序】大根堆排序

1.堆排序不仅拥有与归并排序一样的时间复杂度为o(nlgn),而且空间复杂度所占秩序额外的几个元素空间,这个又有插入排序的优势。2.堆排序分为3部分,第一部分是保持堆的性质的函数MAX_HEAPIFY函数,用于保持堆的性质:父结点的值要大于子节点。                                     第二部分是创建大根堆的函数,BUILD_MAX_HEAP这个函数从第一

2015-05-03 22:30:36 1221

原创 【算法设计-随机算法】利用随机算法生成均匀随机排序数组

思想:1.首先生成1到n的数组A2.生成1到n^3的n个数的随机数组P例如A= P=3.对p数组进行从小到大的排序(利用快速排序),生成数组P1=4.根据3中P1的顺序,生成随机数数组A1=代码:#include#include#include//快速排序,平均时间复杂度o(nlog2n),最好为o(log2n),最坏为o(n2).是不稳定排序( 交换排序)

2015-04-28 16:12:16 2015 2

原创 【c语言】随机数函数

1.生成随机数rand()函数2.由于rand()函数生成的结果都是同一个值,所以需要一个种子函数,这就是srand()函数#include#include#includeint main(void){int i;srand((unsigned)time(NULL));for(i=0;iprintf("%d\n",rand());} 3.如果想生

2015-04-28 10:16:29 586

原创 博客中的理解程度

1.理解程度模糊2.理解程度一般【算法设计-分治】最大子数组问题3.理解程度清晰

2015-04-27 22:22:45 384

转载 【算法-分治】从数组中取出n个元素的所有组合(需要深入理解递归)

本文为转载,原文章出处http://www.cnblogs.com/shuaiwhu/archive/2012/04/27/2473788.html如数组为{1, 2, 3, 4, 5, 6},那么从它中取出3个元素的组合有哪些,取出4个元素的组合呢?比如取3个元素的组合,我们的思维是:取1、2,然后再分别取3,4,5,6;取1、3,然后再分别取4,5,6;......

2015-04-27 16:11:50 2123

原创 结构体成员的内存分布以及大端小端

大端与小端:小端:字节的低位放在内存低位地址,高位放在内存高位地址。大端:字节的高位地址放在内存低位地址,低位放在内存高位地址。判断系统是大端还是小端?若判断处理器是Big还是Little模式,有两种方法。1、int i=1;       char *p=(char *)&i;       if(*p==1)                pri

2015-04-24 20:36:06 2137

原创 【算法设计-分治】最大子数组问题

先写上代码:#includeusing namespace std;typedef struct maximum{int left;int right;int sum;}Maximum;Maximum* FIND_MAX_CROOSING_SUBARRAY(int *A,int low,int mid,int high);Maximum* FIND_MAXI

2015-04-24 14:05:17 551

原创 【数据结构-图】判断图是否有环

1.首先判断无向图方法:1首先求出每个顶点的度            2将图中顶点度            3.将队列中的点x出列,然后删除其他顶点中与x有关联的顶点的这个边,并且将度数减一;将这个顶点从adjlist线性表中删除           4.重复2            5.当队列中元素都出来后,如果adjlist不为0,就说明有环,否则没有环。代码: #

2015-04-20 21:36:15 2947

原创 【操作系统-存储器管理】简单的clock置换算法的实现

分析:clock置换算法是利用循环队列来实现的。操作系统课本上的讲解时这样的代码实现:#includeusing namespace std;typedef struct numbernode{  int *data;  bool *ask;//访问号}Numnode;typedef struct node{Numnode numnode;int m

2015-04-19 14:45:54 2320

原创 【数据结构-图】图的建立以及广度优先遍历算法

本文利用邻接表的方法将图进行了表示,并且利用广度优先遍历方法对图进行遍历下面是一个图的示例:代码如下:#includeusing namespace std;typedef int VexType;typedef struct Arcnode{VexType data;struct Arcnode *nextarc;}ArcNode;typedef

2015-04-16 20:04:56 716

原创 【数据结构-排序问题】各种排序哦

这两天一直总结排序问题,然后话不多啦,直接上代码最主要的是要学会快速排序和冒泡排序,其它排序要熟练即可。#include#include#define DataType int void InsertSort(DataType A[], DataType len);void BiInsertSort(DataType A[], DataType len);void Bu

2015-04-11 10:00:21 883

原创 【数据结构-排序】大根堆的建立

粗略的写了一下大根堆的建立以及输出排序数据的过程,然后用图示来表示结果程序如下:#includeusing namespace std;//节点声明,数据域、左孩子指针、右孩子指针typedef struct BiTNode{int data;int t;//这个是用来表示这是第几个结点struct BiTNode *lchild, *rchild;}BiTNo

2015-04-09 21:43:40 4006

原创 【ACM】华为-2012-校园招聘机试题

3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 = 50且 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,优先级相同的任务按照入队顺序排列(即先入队的任务排在前面),数组元素为-1表示结束。例如:task[] = {0, 30, 155, 1,

2015-04-07 22:00:50 551

转载 【数据结构-查找】哈希表的应用

#include#include#define HASH_LEN 50                      //哈希表的长度         #define M 47                            //随机数#define NAME_NO 30                      //人名的个数        typedef

2015-04-01 14:25:36 549

原创 字符串指针与字符串数组区别

区别1:当一个指针变量在未取得确定地址前使用是危险的,容易引起错误。一个错误的例子,如下:                  char *name;           scanf("%s",name);           printf("%s",name);  有的编译器虽然也能通过,但这是错误的,因为是个指针,定义时指向不可用的地址。解决这个问题有两种方法:用数组的方

2015-04-01 10:14:58 539

转载 AVL树的旋转操作

#ifndef __AVL_TREE_H__#define __AVL_TREE_H__#include "../../bstree/src/bstree.h"templatetypename T>class CAVLTree : public CBSTreeT>{private: CBTNodeT>* Insert(const T &data, CBTNodeT> *p)

2015-03-30 10:45:33 403

翻译 【数据结构-查找】次优排序树

当一列数中的查找概率各不相等的时候就需要利用次优排序来减少查找的次数,而不是利用折半查找。所以这个方法的一个前提也是说必须是有序序列,但是这个序列的每个值得查找概率不同。代码:代码是拷贝的别人的。。。。。。。所以有些地方还不是很理解。。----------------------------------------------------------------------------

2015-03-25 09:26:34 655

原创 【数据结构-查找】有序表的查找-折半查找

算法流程:对一个从小到大的序列来说。。。。。。。。。。。。1.置查找范围初态:low=1,high=n;2.对当前的查找范围进行以下处理    2.1求中项mid=(low+high)/2    2.2将指定值k与中项的关键字值进行比较,如果等于则返回中项序号mid;若mid    2.3重复2.2直至查找到返回mid或者当low>high时候返回0#include

2015-03-24 20:48:52 1251

原创 【数据结构】查找-顺序查找

结构体类型struct Rec{int k;}Rec[n+1],为了使得每个值对应的下标相同,所以设置大小为n+1,Rec[0]的内容接下来说明一般利用倒序查找方法从最后一个值向前查找这样可以简化函数步骤程序如下:#include#includetypedef int Datatype;struct Rec{Datatype key;

2015-03-24 19:39:15 472

原创 【数据结构】二叉树的一个应用,哈夫曼编码的生成

1.哈夫曼树只有结点为0.或者结点为2的值。所以如果叶子结点为n的话,那么整个哈夫曼树的所有结点个数为2n-1;因为结点为2的结点个数n0=n2+1;所以总数n=n0+n2=2n0-1;  过程:由已知的n个权值形成哈夫曼树的初态,即在数组ht[]的前n项中填入相应的权值。           建立哈夫曼树。依次将数组ht[]中的第n+1项到第m项作为当前项,并进行以下处理:   

2015-03-24 09:27:09 1554

原创 BST二叉排序树的建立以及应用

二叉排序树又叫二叉查找树,英文名称是:Binary Sort Tree.  BST的定义就不详细说了,我用一句话概括:左 。 根据这个原理,我们可以推断:BST的中序遍历必定是严格递增的。         在建立一个BST之前,大家可以做一下这个题目(很简单的):        已知,某树的先序遍历为:4, 2, 1 ,0, 3, 5, 9, 7, 6, 8. 中序遍历为: 0,

2015-03-22 21:08:39 874

转载 简述一下二级指针以及指针的引用在结构体中用法

我一下讨论的都是在不用return把值进行返回的情况, 也就是说用指针的情况。很简单就是指针和引用,引用在新版本的c里面也有包含,可以使用。系统xp+ide用的 vc6.0:要把一个值通过调用函数改变,可以用指针和引用,这个值可以是int int *,char char*,或者说是结构体,结构体也有不同的情况,比如说,结构里面有结构体指针和没有的情况,这里我将就我的

2015-03-22 18:36:01 1354 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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