- 博客(48)
- 收藏
- 关注
原创 2020-10-24,人生第一篇正式博客
2020年10月24日,属于这个世界的程序员节,当然也是属于自己的程序员节。从没想过会在优快云博客上很正式的记录自己的所思、所学、所想。而且,这是第一次写文章用MarkDown。记得自己在优快云上分享的之前的博客还是2015你2月3日写的源于C语言中的I/O函数。这篇博客我还记得当初是校招时候准备牛客网习题时候做的。自己的优快云文章基本都是在读研最后一年学习算法导论时候写出来的。其中浏览最多的是下面这一篇。之前看到自己的文章也是共突破4万之后,当时竟然没有想着就这样写下去,觉得自己可能再写作分
2020-10-24 21:47:49
970
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
332
原创 [算法设计-字符的全排列问题]
代码:#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
460
原创 【算法设计-最长公共子串与最长公共子序列】
先写代码,然后晚上上传过程图#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
720
转载 怎样学习的总结
形成T型知识结构:专业知识尽可能深入,专业周边知识尽可能精炼。按照引用列表和作者深入阅读专业书籍。利用结论型/指南型书籍精炼阅读专业周边书籍。不断强化自己的按需学习能力。不一定非要阅读原版。读书并非多多益善。读书之前回答下面几个问题:这本书能给自己带来什么改变?自己是否需要这种改变?如果均为Yes,继续;如果有一个No,砍掉。
2015-07-12 21:48:27
465
原创 【算法设计-动态规划】钢条切割问题
问题:给定一段长度为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
1953
原创 【腾讯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
725
原创 【算法设计-二叉搜索树】二叉查找树的操作与实现
二叉查找树某个结点的左子树的值都比它小,其右子树的值比它大。要实现的主要操作代码实现#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
1060
原创 【散列表-链接法解决冲突】利用链接法来解决冲突的散列表
~~~~(>_首先看一下这种散列表的结构:1.每个槽都令其为NULL,注意里面保存的都是指向Node的指针,而不是结点哦~2.然后我这里把链表的头结点,比如上图的k1,k5,k8的prior指针指向了T这个散列表,因为这样删除的时候会比较简单。3.注意删除链表中的第一个结点和尾结点时候的不同方法哦。。因为这个耽误了3天时间啊。。。好了,代码如下:#include
2015-05-14 07:57:09
949
原创 【散列表-直接定址法】含有卫星数据的直接定址法
数组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
906
原创 【算法设计-散列表】散列表的直接定址法与位向量
位向量(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
1087
原创 【算法设计-二叉树遍历】二叉树的递归与非递归遍历方法
非递归方法利用一个堆栈来将处理。代码如下:#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
539
原创 【算法设计-单链表的逆转】单链表逆转实现
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
5826
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
1127
原创 【算法设计-链表】单链表与双向循环链表
1.单链表代码:包含了尾插法,插入,删除操作。有头结点的单链表也是为了在第一个位置插入和删除时候容易,不需要另外讨论#include#includetypedef struct Linklist{ int key; Linklist *next;}Linklist;Linklist* create_end(){ Linklist *head=(Link
2015-05-06 14:42:27
637
原创 【算法设计-快速排序】随机快速排序算法
1.算法流程:但是为了减少算法因为初始数据可能已经部分按大小排序,导致算法复杂性会变成o(n2)进行了随机选择方法在random_partition中随机产生(p,r)之间的一个数字,然后交换A[i]与A[r]这样会使得快速排序算法的复杂性得到降低。代码实现:#include#include#define DataType int void FastSo
2015-05-04 11:00:23
1284
原创 【算法设计-优先队列】优先队列的实现与操作
优先队列是堆排序的一个具体应用。优先队列分为如下几个操作: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
2029
原创 【算法设计-堆排序】大根堆排序
1.堆排序不仅拥有与归并排序一样的时间复杂度为o(nlgn),而且空间复杂度所占秩序额外的几个元素空间,这个又有插入排序的优势。2.堆排序分为3部分,第一部分是保持堆的性质的函数MAX_HEAPIFY函数,用于保持堆的性质:父结点的值要大于子节点。 第二部分是创建大根堆的函数,BUILD_MAX_HEAP这个函数从第一
2015-05-03 22:30:36
1285
原创 【算法设计-随机算法】利用随机算法生成均匀随机排序数组
思想: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
2102
1
原创 【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
652
转载 【算法-分治】从数组中取出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
2216
原创 结构体成员的内存分布以及大端小端
大端与小端:小端:字节的低位放在内存低位地址,高位放在内存高位地址。大端:字节的高位地址放在内存低位地址,低位放在内存高位地址。判断系统是大端还是小端?若判断处理器是Big还是Little模式,有两种方法。1、int i=1; char *p=(char *)&i; if(*p==1) pri
2015-04-24 20:36:06
2270
原创 【算法设计-分治】最大子数组问题
先写上代码:#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
602
原创 【数据结构-图】判断图是否有环
1.首先判断无向图方法:1首先求出每个顶点的度 2将图中顶点度 3.将队列中的点x出列,然后删除其他顶点中与x有关联的顶点的这个边,并且将度数减一;将这个顶点从adjlist线性表中删除 4.重复2 5.当队列中元素都出来后,如果adjlist不为0,就说明有环,否则没有环。代码: #
2015-04-20 21:36:15
3051
原创 【操作系统-存储器管理】简单的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
2393
原创 【数据结构-图】图的建立以及广度优先遍历算法
本文利用邻接表的方法将图进行了表示,并且利用广度优先遍历方法对图进行遍历下面是一个图的示例:代码如下:#includeusing namespace std;typedef int VexType;typedef struct Arcnode{VexType data;struct Arcnode *nextarc;}ArcNode;typedef
2015-04-16 20:04:56
749
原创 【数据结构-排序问题】各种排序哦
这两天一直总结排序问题,然后话不多啦,直接上代码最主要的是要学会快速排序和冒泡排序,其它排序要熟练即可。#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
931
原创 【数据结构-排序】大根堆的建立
粗略的写了一下大根堆的建立以及输出排序数据的过程,然后用图示来表示结果程序如下:#includeusing namespace std;//节点声明,数据域、左孩子指针、右孩子指针typedef struct BiTNode{int data;int t;//这个是用来表示这是第几个结点struct BiTNode *lchild, *rchild;}BiTNo
2015-04-09 21:43:40
4162
原创 【ACM】华为-2012-校园招聘机试题
3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 = 50且 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,优先级相同的任务按照入队顺序排列(即先入队的任务排在前面),数组元素为-1表示结束。例如:task[] = {0, 30, 155, 1,
2015-04-07 22:00:50
597
转载 【数据结构-查找】哈希表的应用
#include#include#define HASH_LEN 50 //哈希表的长度 #define M 47 //随机数#define NAME_NO 30 //人名的个数 typedef
2015-04-01 14:25:36
585
原创 字符串指针与字符串数组区别
区别1:当一个指针变量在未取得确定地址前使用是危险的,容易引起错误。一个错误的例子,如下: char *name; scanf("%s",name); printf("%s",name); 有的编译器虽然也能通过,但这是错误的,因为是个指针,定义时指向不可用的地址。解决这个问题有两种方法:用数组的方
2015-04-01 10:14:58
590
转载 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
423
翻译 【数据结构-查找】次优排序树
当一列数中的查找概率各不相等的时候就需要利用次优排序来减少查找的次数,而不是利用折半查找。所以这个方法的一个前提也是说必须是有序序列,但是这个序列的每个值得查找概率不同。代码:代码是拷贝的别人的。。。。。。。所以有些地方还不是很理解。。----------------------------------------------------------------------------
2015-03-25 09:26:34
707
原创 【数据结构-查找】有序表的查找-折半查找
算法流程:对一个从小到大的序列来说。。。。。。。。。。。。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
1318
原创 【数据结构】查找-顺序查找
结构体类型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
508
原创 【数据结构】二叉树的一个应用,哈夫曼编码的生成
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
1607
原创 BST二叉排序树的建立以及应用
二叉排序树又叫二叉查找树,英文名称是:Binary Sort Tree. BST的定义就不详细说了,我用一句话概括:左 。 根据这个原理,我们可以推断:BST的中序遍历必定是严格递增的。 在建立一个BST之前,大家可以做一下这个题目(很简单的): 已知,某树的先序遍历为:4, 2, 1 ,0, 3, 5, 9, 7, 6, 8. 中序遍历为: 0,
2015-03-22 21:08:39
947
转载 简述一下二级指针以及指针的引用在结构体中用法
我一下讨论的都是在不用return把值进行返回的情况, 也就是说用指针的情况。很简单就是指针和引用,引用在新版本的c里面也有包含,可以使用。系统xp+ide用的 vc6.0:要把一个值通过调用函数改变,可以用指针和引用,这个值可以是int int *,char char*,或者说是结构体,结构体也有不同的情况,比如说,结构里面有结构体指针和没有的情况,这里我将就我的
2015-03-22 18:36:01
1432
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人