多线程
前言
多线程的学习,说实话我也不知道有什么用,其实我能用到的无非就是一个概念thread函数,然后再结合算法进行应用。而这种简单的应用成本几乎只需要一个小时了解一下概念就可以,根本不需要大费周章去完完整整的看视频进行学习。或许后续的编程学习会让我更加的深入?总之还是待观望。
参考博客
基本概念
并发
定义:并发是指两个或更多的任务(独立的活动)在同一时间段内交替进行。具体来说,就是一个程序可以同时执行多个独立的任务。
单核 CPU 并发:在过去,计算机使用单核 CPU(中央处理器),在某一时刻只能执行一个任务。操作系统通过调度程序实现任务切换(上下文切换),使得看起来像是多个任务同时进行,但实际上每个任务在短时间内交替执行。任务切换时需要保存变量状态和执行进度,这会产生时间开销。
多核 CPU 并发:随着硬件的发展,出现了多处理器计算机,特别是在服务器和高性能计算领域。台式机中的多核 CPU(一个 CPU 内有多个运算核心)可以实现真正的并行处理,对操作系统来说,每个核心被视为独立的 CPU。这样,多个任务可以在不同的核心上同时执行,实现真正的并发 ...
心理统计
前言
虽然这门课叫做心理统计,但是统计的内容几乎不涵盖任何数学公式以及相应的公式推导证明,即使刘红云老师是数学科班出身…据她说,她也是在心理学部摸爬滚打摸索出一条不讲任何数学公式的统计课,适合心理学部宝宝的体质。
多元回归分析
导入包与数据
1234567891011121314151617# 导入包library(haven)library(car)library(olsrr)library(psych)library(ggplot2)library(broom)library(ppcor)library(lm.beta)# 导入数据setwd("/Users/nanxu/研究生课程作业/心理统计/多元回归个人作业数据文件/")data <- read_sav("./3_1.sav")# 查看数据names(data)dim(data)
标准多元回归
12345# 进行多元回归分析model <- lm(timedrs ~ phyheal + menheal + stress, data = data)# 查看模型摘要summary ...
图论
前言
算法导论专题的最后一部分,也是数据结构中最难最综合的内容。图论的算法基于离散数学的结论,给出了具体的算法实现过程,属于是计算机解决数学问题的一大典型。
并且在编写图论算法中,大量使用了相对高级的数据结构例如不相交集合以及斐波那契堆等,一个良好的数据结构或许决定着算法的运算速度,这个概念在之前是无论如何也不会想到的。也难怪,数据结构的算法中并不会强调关于图论的实现,属于是超出能力范畴了…
邻接表与邻接矩阵
邻接表数据结构
12345678910111213141516171819202122232425262728// 边表结点typedef struct EdgeNode { int adjvex; // 邻接点域,存储该顶点对应的下标 EdgeType weight; // 用于存储权值,对于非网图可以不需要 struct EdgeNode *next; // 链域,指向下一个邻接点} EdgeNode;// 顶点表结点typedef struct VextexNo ...
高级数据结构
前言
教程来自B站的《算法导论》,算是中间部分。
但是感觉学完这一段,作用不大…有点鸡肋,希望优质思想能沉淀在脑海里。
好吧,一个优秀的数据结构能很好的解决一个算法查找数据的麻烦,甚至决定了一个算法的时间复杂度
哈希表
链接法
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112//链接法//除法哈希函数int hash(int k, int m){ return k % m;}//初始化除法哈希表node** Division_Hash_Init(int m, int *n, int num){ node** T; T = (nod ...
排序选择算法
前言
教材来自麻省理工版本的算法导论,B站亦有相应的高清视频可供观看
学习的目的一则是复现上课所讲的代码,二则是训练自己的编程水平(
排序算法
插入排序
12345678910111213141516void Insertion_Sort(int* a, int num){ int t; for (int i = 1; i < num; i++) { t = a[i]; int j = i - 1; while (j >= 0 && a[j] > t) { a[j + 1] = a[j]; j--; } a[j + 1] = t; }}
归并排序
1234567891011121314151617181920212223242526272829303132333435void Merge(int* a, int p, int q, int r){ int n1 = q - p + 1; int n2 = r - q; int* L, * ...
数据结构
前言
由于数据结构上课的的确确听的还认真,(的确,但凡C语言指针没有忘,上课就跟玩一样)但是呢…代码是一点都没有碰(哪怕是有上机作业呢:),加之想复习一下关于C/C++的代码以及代码的调试功能,于是开始了我的数据结构赎罪之路。
visual studio常见报错
使用了可能未初始化的本地指针变量“xxx
项目属性->配置属性->C/C++->SDL检查,选测是或者否。
线性表
带头结点的单链表
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 ...
R语言学习
前言
虽然但是,还是系统的学了一遍R。但实际体验下来,感觉和Python的pandas包非常的类似,感觉天下的统计的语言都是一家。
视频教程链接
基本数据结构
向量
基本概念
数值型
1> x <- c(1, 2, 3, 4, 5)
字符串型
1> y <- c("one", "two", "three")
逻辑型(全部大写)
12> z <- c (T, F, T)> z <- c (TRUE, FALSE, T)
等差数列
12> c(1:10) [1] 1 2 3 4 5 6 7 8 9 10
seq()函数
生成等差数列,from与to控制起始与终点,by控制数列间距,length.out控制数列个数
1234> seq(from = 1, to = 10, by = 5)[1] 1 6> seq(from = 1,to =10 , length.out=10) [1] 1 2 3 4 5 6 7 ...
矩阵与线性方程组
前言
该程序是我大一C语言课程一直延续至今的一个大程序,从C语言的基本高等代数的内容,再到C++时期用上了类的思想,最后在到数据结构课程设计里面用上了可视化写了一个交互式的计算器,真的是很不容易了!!最后在数值分析里面加上了数值分析专有的计算方法,也算是丰富了高等代数的内容,算是一个很好的补充。
该程序凝结了我大学的全部思想(bushi),虽然不是像计算机专业的课设一样高精尖,但是每一行代码都是自己亲手敲的,甚至为了学习二维数组的动态开辟,还专门系统重新学习了一遍指针,也算是对C的一个回顾吧。
再看矩阵时已不是少年……
数组功能
非主线功能
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758// 相加double add(double a, double b){ return a + b;}// 相减 a-bdouble sub(double a, double b){ return a - b ...
吃豆人大逃亡
前言
想学一点大项目的编程,原因是在数学学院只学会了算法,对于一些大项目的处理略显得吃力。
还是很好玩的,突然发现自己设置的游戏好难,连自己的AI都赢不了。(我那个算什么辣鸡AI呢?)
下面是B站视频教程
需要额外安装easyx函数库
自己对游戏稍做了修改,增强了AI的追踪能力,虽然追踪看上去很弱鸡,但是被几个傻子壁咚肯定不好受(\汗)
下面是游戏地图,当然可以自己下载其他地图,代码鲁棒性还行。
代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301 ...
指针与结构体
前言
学习指的目的,有一点来头了且有一点绕。
我本是在做数值分析中矩阵行列式的MATLAB代码,但是之前C程序设计的课程报告里面已经把矩阵运算的各种代码编写的十分的完善。但是我在复现之中,想把动态开辟内存的C++方法new替换成C中的malloc进行动态开辟。但是自己搞了很久也没有搞懂如何动态开辟空间,所以就跟指针干上了。
下面是B站的课程:C指针视频教程
以及CSDN上面的博客总结了这个视频:视频知识点总结
C结构体视频教程
下面开始总结复习~
指针的基本概念
123456789int a = 4;int* p;//指针的声明p = &a;//取地址printf("p指向的地址为%d \n", p);printf("p所指向的值为%d \n", *p);//解引用printf("a的地址为%d \n", &a);printf("a的值为%d \n", a);
12345p指向的地址为5700172p所指向的值为4a的地址为5700172a的值为4
注:p指向的地址与a的地址在每一次 ...