- 博客(23)
- 资源 (12)
- 收藏
- 关注
原创 交换排序之冒泡排序代码实现及优化
冒泡排序意思:像气泡一样,从水底到水面,逐渐变大。每一次两两交换(如第一个数和第二个数,第二个数和第三个数……),若前面的数比后面的数大就交换顺序,一次排序总能找到一个最大的数。(设为内循环)再次进行一次排序,这一次最后一个数已经是这组数中的最大数了,不参与排序。如果有n个数,第一次就需要比较n-1次,第二次就需要比n-2次。(外循环)public class Main { public static void main(String[] args) { int[] array= {1,2,.
2020-08-29 22:14:27 243
原创 C语言实现哈希表(除留余数法+链地址法)
定义结构体#define ElemType int#define P 7typedef struct HashNode{ ElemType data; HashNode* link;}HashNode;typedef HashNode* HashTable[P];//表里存的是个地址,这是个HashNode*类型的数组//如HashTable[i] 表示指向第一个结点的地址实现方法#include "HashTable.h"/**初始化*/void InitHashTable
2020-08-24 22:14:28 3359 1
原创 C语言实现串的模式匹配
BF(暴力匹配算法)思路:将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。代码实现(顺序存储实现的求子串定位函数)int StrIndex(SString S, SString T, int pos){ int i = pos; int j = 0; while (S[i] != '\0' && T[j] != '\0') {
2020-08-18 20:45:21 1444
原创 字符串的模式匹配(BF,KMP)
BF优化1:如果上面的图不匹配,那下面就不用匹配了,直接退出循环找到临界值10-4=6的位置,ti-pi是文本串正在匹配的子串的开始索引,当ti=7,pi=0时,没有比较的必要,立即退出ti – pi 是指每一轮比较中 text 首个比较字符的位置,如8-2=6,符合要求,可以比较...
2020-08-18 20:43:13 224
原创 最长公共子串长度的实现
求两个字符串的最长公共子串长度ABCBA 和 BABCA 的最长公共子串是 ABC,长度为 3代码static int Lcs(String str1,String str2) { if(str1==null&&str2==null) return 0; char[] char1=str1.toCharArray(); if(char1.length==0) return 0; char[] char2=str2.toCharArray(); if(char
2020-08-18 11:37:01 401
原创 从数据类型的角度看指针
指针的赋值int* a;a=(int*)1;不管int后有多个*,强制转换时就加几个*char* x;short y;int z;x=(char *)1;y=2;z=3;编译器对声明时的每个变量分配4字节的空间,定义时才给具体的空间。任何类型都可以带 * 加上 * 以后是新的类型。指针类型定义的变量占4字节,不管后有多个*,这个变量存储的数据宽度都是4字节。++或–(不支持*和/)不带类型的变量,++或者-- 都是假1 或者减1带 的++和-- 是根据自身类型的宽度决定的
2020-08-14 13:28:54 102
原创 旋转体体积和平行截面的面积求体积
1、只需计算下面相交的体积,然后乘8就是两圆柱相交的体积从z轴上往下切,切的面积都是正方形2、圆锥的每一个截面都是圆,圆锥切片再小也有厚度
2020-08-13 23:18:47 1215
原创 函数堆栈图(函数调用的本质)
程序起始点寄存器情况找到函数入口,按f2让cpu执行到这里寄存器情况按f8单步执行函数,查看EBP和ESP寄存器push 2,push 1 入栈call :1.改变EIP的值;2.把下一个语句的地址入栈(与jmp的区别)后面的地址=当前地址+当前指令长度(当前是长度5字节)执行函数体CCCCCC表示int 3 中断,防止缓冲区溢出回到调用前的状态...
2020-08-13 13:24:01 396
原创 二级指针做函数参数
下面围绕对指针数组的操作进行说明第一种内存模型#include "stdio.h"#include <stdlib.h>#include <string.h>void printArr(char** arr,int num) { if (arr == NULL)return -1; for (int i = 0; i < num; i++) { printf("%s\n", arr[i]); }}int sortArr(char** arr, int.
2020-08-11 22:27:45 2291 1
原创 C语言实现迪杰斯特拉算法求最短路径
文章目录1.找到初始顶点X到各个顶点的权值(这里X为A)第2步和第3步用一个for(i1.找到初始顶点X到各个顶点的权值(这里X为A)for (int i = 0; i < n; i++){ dist[i] = GetWeight(g,v,i); s[i] = false; if (i != v && dist[i] < MAX_COST) path[i] = v; else path[i] = -1;}第2步和第3步用一个for(i<n-1)包
2020-08-10 23:33:22 3931
原创 32位cpu和64位cpu对内存地址和内存单元的差别
计算机中最基本的存储单元(即内存单元)为1字节,无论计算机是多少位的计算机,和cpu的位数无关32位或64位针对的是内存单元的地址的个数,即cpu的寻址能力在各个可视化软件中,以16进制的形式表示内存地址和内存地址里存储的值。上图中内存地址为8位16进制,根据两位16进制换算为1字节,该cpu内存地址最大是8字节(即32位),为32位计算机。一共有4G个地址里面的值都是每两位16进制数(即1字节)进行存储。如果是64位的计算机,那么内存地址单元就是16位16进制数表示(64位),计算后其可寻址空
2020-08-10 10:12:51 5583 2
原创 操作系统的结构
Operating-Sysytem Structures:1.Operating System Serviecs.User InterfaceProgram executionI/O operationsfile-system manipulation2.User Operating System Interface.3.System Callwindows里喜欢叫API,而Un...
2020-08-09 09:29:58 187
原创 进程同步之生产者消费者问题
文章目录生产者消费者问题如何避免——竞争条件peterson solution硬件可以控制中断(关中断)核心问题:当多线程多进程的编程时,只要有共享的数据(内存)被访问,数据就有可能被破坏。生产者消费者问题生产者往缓冲区写数据,消费者读数据,缓冲区有限制,一个只能读,一个只能写,且速度不一样。count记录现在缓冲区的数据,这是两个进程中共享的变量,缓冲区最多可放BUFFER_SIZE个...
2020-08-09 09:28:23 757
原创 CPU调度
while纯占cpu,不做输入输出操作,这种程序存在没有任何意义。大多数程序通过Io获得数据,通过cpu对数据进行处理,再通过IO将结果输出出去一、调度1.分类就绪队列里的进程让哪一个先进行1.运行态到等待态2.运行态到就绪态3.等待态到就绪态4.运行的进程退出非抢占式:1,4,自愿出让cpu自愿抢占式:2,3 抢占式的调度是被动的现在的OS一般都是抢占式的,让其他进程都有运行...
2020-08-09 09:26:55 153
原创 计算机的启动过程
阮一峰:http://www.ruanyifeng.com/blog/2013/02/booting.html结合:https://blog.csdn.net/langeldep/article/details/8788119
2020-08-09 09:23:20 120
原创 计算机启动过程(x86)
1.x86PC刚开机时CPU处于实模式,和保护模式对应,实模式的寻址CS:IP(CS左移4位+IP),和保护模式不一样!2.CS=0xFFFF;IP=0x0000;3.寻址0xFFFF0(ROM BIOS映射区),唯一有代码的地方4.检查RAM,键盘,显示器,软硬磁盘5.将磁盘 0磁道0扇区读入内存的0x7c00处(OS的引导扇区)0x7c00存放的代码就是从磁盘引导扇区读入的那512...
2020-08-09 09:21:50 991
原创 C语言实现最小生成树之克鲁斯卡尔算法
图示难点是:当选择最后一条边时,v2-v3是5,v1-v4也是5,但是v1-v4一旦连上就会出现环且这个图不是连通图,所以在代码中如何判断环的出现和保证最小生成树是连通的?代码//定义一个结构体记录生成树一条边的起始顶点和终止顶点,还有相应的权值的信息typedef struct Edge{ int x; // start int y; // end E cost;}Edge;int cmp(const void*a, const void *b)//比较权值的大小{ re
2020-08-07 20:13:48 1227
原创 C语言实现最小生成树之普里姆算法
实现的文字说明如何实现的图示说明mst[2]=1 lowcost[2]=6 从点1到点2的权值是6以v3为终点的权值最小,把边<MST[3],3>=1加入最小生成树MST以v6为终点的权值最小,把边<MST[6],6>=4加入最小生成树MST以v4为终点的权值最小,把边<MST[4],4>=2加入最小生成树MST以v2为终点的权值最小,把边<MST[2],2>=5加入最小生成树MST当所有的数组的值都为0,说明创建成
2020-08-07 16:25:48 1152
原创 C语言实现邻接矩阵(无向图的顺序表示)
有向/无向不带权图带权图定义图的结构体#define Default_Vertex_Size 10#define T chartypedef struct GraphMtx{ int MaxVertices;//最大顶点容量 int NumVertices;//图中顶点个数 int NumEdges;//图中边的条数 T *VerticesList;//指向存有顶点的空间的指针 int **Edge;//指向存矩阵的空间的指针}GraphMtx;初始化void
2020-08-06 13:06:22 2477
原创 数据结构+算法=程序设计
文章目录程序设计:为计算机处理问题编制的一组指令集数据结构:问题的数学模型数据数据元素(数据结构中讨论的基本单位)数据结构数据结构的形式定义 (逻辑结构): 二元组 Data_Structure(D,S)逻辑结构在计算机中的表示(存储结构)元素的映像方法:二进制存储(bit)关系的映像方法:以一个有序对程序设计:为计算机处理问题编制的一组指令集数据结构:问题的数学模型和数值计算相关的的数学模型求解的问题,如建立线性代数方程,常微分偏微分方程,就是计算数学所要研究的问题。和非数值计算相关的的数学模型求
2020-08-06 12:11:24 1837
原创 C语言实现邻接表(无向图的链式表示)
V1顶点后面链着的是与他相连的边的序号(第i个单链表后的结点表示依附于顶点Vi的边)这是一个无向图,所以邻接表一共有12条边定义结构体
2020-08-05 23:01:14 2453 1
汇编金手指和白皮书和JCC跳转文档.zip
2020-07-07
putty ssh连接
2020-06-19
EasyUEFIQYB38.zip
2020-06-19
snifferpro.zip
2020-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人