- 博客(36)
- 收藏
- 关注
原创 机器学习
有关机器学习的基本术语:**数据集:**一组数据记录的集合;**属性 :**表示事件或对象在某方面的表现或性质的事项;例如西瓜的“色泽”、“触感”等;**属性值:**属性上的取值;如“青绿”、“硬滑”等**属性空间:**或称样本空间、输入空间,表示属性张成的空间;如“色泽”、“触感”、“敲声”构成一个描述西瓜的三维空间;**特征向量:**空间中的每个店对应一个坐标向量,我们把一个示例称...
2019-12-09 18:15:46 190
原创 红黑树
红黑树是一种自平衡二叉查找树所以要想系统的认识红黑树,就需要先了解二叉查找树**二叉查找树:**又称二叉排序树或二叉搜索树;一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。具有这种性质的树称为二叉查找...
2019-12-05 18:00:32 151
原创 线程池
概念:线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。具体原理:首先创建一些线程,将他们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的进程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。使用线程池的原因:在面向...
2019-10-23 16:35:48 196
原创 GCC编译程序
GCC(GNU Compiler Collection)是linux下最主要的一种编译工具。GCC编译格式:gcc [选项] 源文件名 [选项] 目标文件名采用默认得方式编译源文件,系统会生成a.out可执行文件采用显式编译成目标文件,在编译成可执行文件gcc -c hello.c #生成hello.ogcc hello.o #生成a.outgcc -o hello hello.o...
2019-10-10 14:43:19 261
转载 shell脚本
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序...
2019-09-28 17:20:31 927
原创 不能为虚拟电脑Ubuntu打开一个新任务(win10更新所导致)
Windows10更新导致Ubuntu无法启动刚更新完Windows10,重启完电脑,打开Linux,启动Ubuntu后,结果:在csdn上发现了同样的错误代码,用了禁用USB的方法发现根本毫无用处。无奈求助于老师,就有了这样的解决方法:在运行中先找到电脑IP地址;键入 ipconfig/all 回车找到IP地址,然后退出。确认一下安装包在C盘当前用户下找到与Virtua...
2019-09-28 16:59:15 13421
原创 软链接和硬链接
软链接和硬链接Linux链接文件类似于Windows下的快捷方式。链接文件分为软链接和硬链接。软链接:软链接不占用磁盘空间,源文件删除则软链接失效。硬链接:硬链接只能链接普通文件,不能链接目录。软硬链接区别软链接:(1)、软链接以路径的方式存在,类似于Windows中的快捷方式。(2)、软链接可以跨文件系统,硬链接不可以。(3)、软链接可以对一个不存在的文件名进行连接(4)、软...
2019-09-26 14:56:29 468
原创 Linux基础操作命令
Linux是什么?Linux是一个支持多线程和多CPU的操作系统。常用的Linux操作命令(Ubuntu版本):基本操作命令(快捷键):调出命令终端 Ctrl+alt+t终端字体变大 Ctrl+shift+ +终端字体变小 Ctrl+ -清屏 Ctrl+l 或 clear(命令)查看帮助 help 或 man ls退出 q简单操...
2019-09-24 15:43:29 161
原创 全排列
库函数求全排列:C++标准函数库STL中,有一个函数next_permutation()用以求数列的全排列,该函数有两个参数,用来求一段区间内的全排列,需注意的是,该函数只能用于升序且不含重复元素的全排列。#include <iostream>#include <cmath>#include <algorithm>int main(){ int a...
2019-09-20 16:13:57 154
原创 运算符重载
运算符重载:是指对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为,运算符重载实质上就是函数重载,重载为成员函数,可以自由的访问本类的数据成员。规则:(1) 只能重载已有运算符,不能创造新的运算符;(2) “.”,“*”,“::”,“ ? : ”不能重载;(3) “ = ”,“[]”,“->”,“()”,只能以成员形式重载;(4) 重载运算符时,若其所...
2019-09-20 15:12:00 319
原创 函数模板与类模板
C++最重要的特性之一就是代码重用,为了实现代码重用,代码必须有通用性。通用代码应不受数据类型的影响,并可以自动适应数据类型的变化。这种程序设计类型称为参数化程序设计。模板是C++支持参数化程序设计的工具,通过它们可以实现参数化多态性。所谓参数化多态性,就是将程序所处理的对象的类型参数化,使得一段程序可以用于处理多种不同类型的对象。函数模板:对于功能完全一样,只有参数不同的函数,若能编写一段通...
2019-09-10 17:50:45 262
原创 构造函数和析构函数
类和对象的关系相当于基本数据类型和它的变量的关系,即一般与特殊的关系,每个对象区别于其他对象的地方主要有两个:外在的却别就是对象的名称,内在的区别就是自身的属性值即数据成员的值。在定义对象时,可以同时对其数据成员赋初值,在定义对象时进行的数据成员设置,称为对象的初始化,在特定的对象使用结束时,需要进行一些清理工作,这里的初始化和清理工作分别由两个成员函数来完成,分别为构造函数和析构函数。1.构...
2019-09-05 16:11:21 367
原创 排序算法之鸽巢排序
冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)鸽巢排序(Pigeonhole Sort)鸽巢排序(Pigeonhole Sort):也被称作基数分类,是一种时间复杂度为O(n)且在不可避免遍...
2019-09-03 16:03:16 918
原创 排序算法之堆排序
排序算法目录冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)鸽巢排序(Pigeonhole Sort)堆排序(Heap sort):堆排序是这几种排序中算法逻辑最复杂的一种排序算法,利用堆这种...
2019-08-29 16:09:49 144
原创 排序算法之快速排序
*排序算法目录 **冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)鸽巢排序(Pigeonhole Sort)快速排序(Quick Sort)快排同样采用分治法,在逻辑上也有点类似于归并排序...
2019-08-26 18:14:20 124
原创 排序算法之归并排序
*排序算法目录 **冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)鸽巢排序(Pigeonhole Sort)归并排序(Merge Sort):归并排序,是创建在归并操作上的一种有效的排序算...
2019-08-26 17:17:38 111
原创 排序算法之希尔排序
*排序算法目录**冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)鸽巢排序(Pigeonhole Sort)希尔排序(Shell Sort):也称递减增量排序算法,是插入排序的一种更...
2019-08-23 15:48:18 510
原创 排序算法之插入排序
*排序算法目录**冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)鸽巢排序(Pigeonhole Sort)插入排序(Insertion Sort):**是一种简单直观的排序算法。它...
2019-08-23 15:05:58 173
原创 排序算法之选择排序
*排序算法目录**冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)鸽巢排序(Pigeonhole Sort)选择排序(Selection sort):是一种简单直观的排序算法,其思想...
2019-08-22 19:08:47 140
原创 排序算法之冒泡排序
*排序算法目录**冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)鸽巢排序(Pigeonhole Sort)冒泡排序:冒泡排序是一种稳定排序,其实现逻辑比较简单直观,但是效率比较底下...
2019-08-22 18:27:25 165
原创 排序算法总结
排序,是算法中的经常需要用到的一些操作;所以,对于一些常见的排序算法,对其做一下总结还是很有必要的。排序算法平均时间复杂度最坏时间复杂度稳定性冒泡排序O(n²)O(n²)稳定选择排序O(n²)O(n²)不稳定插入排序O(n²)O(n²)稳定希尔排序O(n(logn))O(nlog²n)不稳定归并排序O(n(logn))O...
2019-08-20 18:29:09 114
原创 指针数组和数组指针以及函数指针数组
数组指针**类型名(指针变量名)[数组长度]int (*p)[4];这句话的意思是定义了一个指针变量,该指针指向一个数组,此数组长度为4,元素为int类型,所以p是一个指针。指针数组*类型名 指针变量名 [数组长度]int p[4]这是定义了一个指针数组,由于下标运算符的优先级高,[4]先与p结合成为一个数组,再由int 说明这是一个整型指针数组,它有n个指针类型的数组元素举例...
2019-08-16 15:07:55 108
原创 内存对齐
内存对齐原则:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。对齐规则:对齐数值:min(设置的对齐数值,max(所有成员的类型大小))#include <stdio.h>#include <string.h>typedef struct _STU{ //所有成员...
2019-08-16 14:22:29 309
原创 求一个整数二进制格式中有多少位是“1”
求一个整数二进制格式中有多少个“1”#include <stdio.h>int main(){ int number; scanf("%d", &number); int cnt = 0; while (number != 0) { number &= number - 1;//用该数与自己做“&”运算 cnt++; } printf...
2019-08-14 19:02:43 252
原创 链表归并
将两个升序链表归并为一个链表,其结果仍为升序代码思想:将两个已为升序的链表合并为一个升序链表,用头插法插入head1链表,用尾插法插入head2链表,然后在Lump函数中比较并归并。代码逻辑:头插或尾插后两个链表都是升序,然后在Lump函数中对其操作。先定义4个指针,其中在插入时,t用来指向插入后应被删除的结点。p,p1,p2,分别用来指向Head,head1,head2的第一个结点;当p...
2019-08-08 17:45:58 449
原创 链表的按值删除
代码的作用是将元素用头插的方法插入简历的链表中,然后输入一个数值,删掉链表中与其相等的结点。代码逻辑:在主函数中建立两个链表,并用头插的方法插入两组数据,调用deletehead函数对其操作(第一个结点和最后一个结点不做处理);用pPos指向第一个结点,t指向pPos的下一个结点,若其满足删除条件,令pPos->next指向t->next,free(t)并令t=NULL。然后令pP...
2019-08-07 17:22:17 1349
原创 将一个链表按逆序排列
本代码的作用是将一个链表按逆序排列,若链表为空链表或只含有一个结点则无需进行处理。在主函数中创建一个空链表,然后用头插法依次插入元素,则其数据域依次存入的值为:8,7,6,5,4,3,2,1,;在Reverse函数中对其进行逆序处理。若不是空链表或只有一个结点的链表则继续对其进行操作。用p1,p2,p3分别对应第一到第三个节点,第一步执行红色线条对应的操作,得到的结果是:头结点和第二个结点指向...
2019-08-06 18:48:05 1639
原创 定义一个结构体变量(包括年,月,日)。计算该日在本年中是第几天?
本程序的作用是计算所输入的日期在该年中的第几天。在RQ函数中判断所输入的日期是否正确,若不正确则重新输入直至输入正确,days函数用于处理该日属于该年中第几天的问题并进行打印。typedef struct _Date{int year;int month;int day;}Date;void days(Date p,int* a){int sum, i;sum = p.day...
2019-08-05 18:00:19 4724
原创 将矩阵中最大元素放在中心,4个最小的元素放于四角。
将一个5*5的矩阵中最大元素放在中心,4个角分别放4个最小的元素(顺序从左至右从上至下)先将二维数组转化为一维数组,做4次冒泡排序之后,数组中最后4位就是4个最小值降序排列,然后将其与需要交换的元素交换,然后转化为二维数组;找出其中最大值,与中心元素交换,输出二维数组。代码缺陷:在4次冒泡排序时打乱了原数组的原本序列,若要求不打乱原序列,只进行交换,则需要额外定义4个变量,访问数组时依次进行...
2019-08-01 19:05:54 2373 1
原创 函数及函数的递归调用求解汉诺塔和数的阶乘
函数的性质一个C程序可由一个主函数和若干个其他函数构成,主函数可调用其他函数,其他函数也可以相互调用,同一个函数可以被一个函数或多个函数调用任意多次。优点:(1)提高代码的复用性;(2)对功能和任务的拆解。(函数可以把代码拆解为多个模块,但模块越多效率相对越低。)函数定义的形式类型标识符 函数名(形参表列){声明部分语句部分}在定义函数时,函数名后面括号中的变量名称为“形式...
2019-07-30 15:31:08 377 1
原创 打印杨辉三角
杨辉三角的性质:(1)每行首尾数字为1;(2)第n行共有n项;(3)每行数字左右对称;(4)第一行只有一个1,第二行有两个1,从第三行开始,除首位外其他项的值等于上一行与其相邻的数字之和。代码只打印杨辉三角的前十行(靠左对齐),把首项(j0),和末项(ij)赋值为1,其余项用其算法求出。#include<stdio.h>int main(){int a[10][10]...
2019-07-27 18:10:50 220 1
原创 c语言中容易出错的几个地方
(1)常量与变量判断是否相等时,一般把常量写在前面,这样若少写一个 = 会出现错误提示,方便改正。(2)判断浮点数是否相等时,不允许用==,因为有些小数部分因为二进制转换导致不能存储准确的值。一般设置一个精度来做判断,如果两数之差的绝对值处于精度之外的话,我们可以看做两个数相等。const double EXP=1e-6;if (fabs(d-x)<=EXP){…}(3)循...
2019-07-25 18:54:58 983
原创 判断一个日期输入是否正确。
本程序用于验证输入从公元元年后的一个日期,然后判断日期是否正确。若输入错误日期,则继续进行此流程,直至日期正确。 RQ函数中先对月份和年份进行判断,然后在switch中对二月做闰年的处理,判断其是否正确。#include<stdio.h>int RQ(int y, int m, int d){int year, month, day;year = y, mo...
2019-07-25 18:05:01 1291
原创 二维数组的转置,镜像等操作
在主函数里对数组依次赋值,然后输出依次原数组,对其进行操作之后再次输出。#include<stdio.h>//转置void T(int a[][4], int len1, int len2){int t;for (int i = 0; i < len1; ++i){for (int j = 0; j < i; ++j){t = a[j][i];a[j...
2019-07-23 18:35:30 1204 1
原创 如何判断两个矩形是否相交
判断图形相交一个简单的例子:在平面坐标里有四个圆分别以(2,2),(2,-2),(-2,-2),(-2,2)为圆心,现取平面内任意一点,问其是否落于圆内。算法思路:四个圆关于原点中心对称,可以对所求点取绝对值,放在第一象限内求解,若所求点与圆心距离小于半径,则其落于圆上。伪代码:double a,b;scanf("%d%d",&a,&b);a=fabs(a);b=fa...
2019-07-21 21:42:27 2221
原创 如何打印出菱形的星号*
代码思路:先打印出a行a列的星号,然后删去4个边角;左上方删去星号的位置行列之和小于a/2,右上角及左下角位置为行列之差小于a/2,右下角的星号位置行列之和大于a+a/2;在这些位置打印空格字符。输入的a表示行数应为正的奇数,用puts或printf在第二个循环里输出换行字符用来控制换行。int i, j, a;scanf("%d",&a);for (i = 0; i < ...
2019-07-19 18:40:59 1127
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人