全部 文章 问答 分享 共找到1208个相关内容
[文章] Java-数据结构和算法-选择排序(selection sort)
Java-数据结构和算法-选择排序(selectionsort)选择排序哦,前一篇是冒泡排序Java-数据结构和算法-冒泡排序(bubblesort)选择排序怎么个选择法呢?
2020-03-31 00:21 · 选择排序 / 算法 / select / sort / 排序
[文章] Java-数据结构和算法-冒泡排序(bubble sort)
Java-数据结构和算法-冒泡排序(bubblesort)连概述都懒得写了,直接写相关的代码和说明吧一般来说,按大学的套路,先有导论,然后有概述,听得大家都睡觉了。
2020-03-30 23:25 · 冒泡排序 / 算法 / 排序 / Bubble / Sort
[文章] Kotlin实现的二叉树数据结构
Kotlin实现的二叉树数据结构二叉树,树,二叉,倒树小的key在左边,大的数在右边。
2020-11-02 18:17 · 算法 / keyvalue / 二叉树 / / binaryTree
[文章] (13)王道数据结构-静态链表
静态链表定义分配一整片连续的内存空间,各个节点集中安置#defineMaxSize10//静态链表的最大长度typedefstruct{//静态链表结构的定义intdata;//存储数据元素intnext
2022-08-11 18:06 · 数据结构 / 静态链表
[文章] (10)王道数据结构-建立链表
尾插法#include<stdio.h>#include<stdlib.h>typedefstructLNode{//定义单链表结构intdata;//每个节点存放一个数据structLNode
2022-08-08 17:24 · 数据结构 / 单链表 / 插入操作
[文章] Java-数据结构和算法-插入排序(insertion sort)
Java-数据结构和算法-插入排序(insertionsort)相关文章接下来我们看看插头排序插入排序我打牌一般不输,我有一个跟输赢无关的习惯。就是牌会按大小顺序排列。
2020-03-31 23:30 · 插入排序 / 算法 / 排序 / insertion / sort
[文章] (07)王道数据结构-单链表的定义
不带头结点#include<stdio.h>typedefstructLNode{//定义单链表结构intdata;//每个节点存放一个数据structLNode*next;//指针指向下一个节点
2022-08-08 17:19 · 单链表 / 数据结构
[文章] (15)王道数据结构-栈的基本概念
基本定义栈是只允许在一端进行插入或删除操作的线性表重要概念栈顶:允许插入和删除的一端栈底:不允许插入和删除的一端基本结构逻辑结构:与普通线性表相同数据运算:插入、删除操作有区别基本操作InitStack
2022-08-11 18:11 · 数据结构 /
[文章] (14)王道数据结构-顺序表和链表比较
逻辑结构都属于线性表,都是线性结构存储结构相同点:都属于线性表,都是线性结构顺序表优点:支持随机存取、存储密度高缺点:大片连续空间分配不方便,改变容量不方便链表优点:离散的小空间分配方便,改变容量方便缺点不可随机存取
2022-08-11 18:08 · 数据结构 / 顺序表 / 链表
[文章] (09)王道数据结构-单链表的查找
按位查找#include<stdio.h>#include<stdlib.h>typedefstructLNode{//定义单链表结构intdata;//每个节点存放一个数据structLNode
2022-08-08 17:23 · 单链表 / 数据结构 / 查找
[文章] (17)王道数据结构-栈的链式存储实现
基本结构typedefstructLinknode{ElemenTypedata;//数据域structLinknode*next;//指针域}*LiStack;//栈类型定义实现代码#include&
2022-08-18 10:27 · 数据结构 / / 链式存储
[文章] (08)王道数据结构-单链表插入和删除
按位序插入带头节点#include<stdio.h>#include<stdlib.h>typedefstructLNode{//定义单链表结构intdata;//每个节点存放一个数据
[文章] (12)王道数据结构-循环链表
循环链表基本操作循环单链表#include<stdio.h>#include<stdlib.h>typedefstructLNode{//定义单链表节点类型intdata;//每个节点存放一个数据
2022-08-11 18:05 · 数据结构 / 循环链表
[文章] (04)王道数据结构-顺序表的定义
顺序表实现-静态分配:#defineMaxSize10//定义最大长度typedefstruct{intdata[MaxSize];//用静态的“数组”存放数据元素intlength;//顺序表的当前长度
2022-08-05 10:36 · 数据结构 / 王道 / 顺序表
[文章] (11)王道数据结构-双链表的基本操作
双链表基本操作#include<stdio.h>#include<stdlib.h>typedefstructDNode{//定义双链表节点类型intdata;//数据域structDNode
2022-08-11 18:04 · 数据结构 / 双联表
[文章] (05)王道数据结构-顺序表的插入与删除
插入操作:#defineMaxSize10//定义最大长度typedefstruct{intdata[MaxSize];//用静态的“数组”存放数据元素intlength;//顺序表的当前长度}SqList
2022-08-05 10:41 · 王道 / 数据结构 / 顺序表
[文章] (18)王道数据结构-队列的定义和基本操作
基本结构只允许在一端进行插入,在另一端删除的线性表,先进入队列的元素先出队概念队头:允许删除的一端队尾:允许插入的一端操作InitQueue(&Q):初始化队列,构造一个空队列QDestroyQueue
2022-08-18 10:30 · 数据结构 / 队列
[文章] Java集合
LinkedListLinkedList是基于双链表数据结构实现的什么是双链表呢?
2020-05-24 12:27 · Java / 集合 / Map / Set / List
[文章] (19)王道数据结构-队列的链式实现
带头结点#include<stdio.h>#include<stdlib.h>typedefstructLinkNode{intdata;structLinkNode*next;}LinkNode;typedefstruct{LinkNode*front,*rear;}LinkQueue;voidInitQueue(LinkQueue&Q);voidEnQueue(LinkQueue&Q,intx);boolDeQueue(LinkQueue&Q,int&x);boolIsEmpty(LinkQueueQ);intmain(void){LinkQueueQ;intx;InitQueue(Q);EnQueue(Q,1);EnQueue(Q,2);EnQueue(Q,3);EnQueue(Q,4);EnQueue(Q,5);EnQueue(Q,6);EnQueue(Q,7);DeQueue(Q,x);DeQueue(Q,x);DeQueue(Q,x);DeQueue(Q,x);if(!IsEmpty(Q)){printf("x=%d\n",x);}return0;}//初始化队列voidInitQueue(LinkQueue&Q){//初始时,队头和队尾指针指向头结点Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));Q.front->next=NULL;}//判断队列是否为空boolQueueEmpty(LinkQueueQ){if(Q.rear==Q.front){//队空条件returntrue;}else{returnfalse;}}//入队(带头结点)voidEnQueue(LinkQueue&Q,intx){LinkNode*s=(LinkNode*)malloc(sizeof(LinkNode));s->data=x;s->next=NULL;Q.rear->next=s;//新节点插入到rear之后Q.rear=s;//修改表尾指针}//队头元素出队boolDeQueue(LinkQueue&Q,int&x){if(Q.front==Q.rear){//空队returnfalse;}LinkNode*p=Q.front->next;x=p->data;//用变量x返回队头元素Q.front->next=p->next;//修改头结点的next指针if(Q.rear==p){//此次是最后一个节点出队Q.rear=Q.front;//修改rear指针}free(p);//释放节点空间returntrue;}//判断队列是否为空boolIsEmpty(LinkQueueQ){if(Q.front==Q.rear){returntrue;}else{returnfalse;}}不头结点#include<stdio.h>#include<stdlib.h>typedefstructLinkNode{intdata;structLinkNode*next;}LinkNode;typedefstruct{LinkNode*front,*rear;}LinkQueue;voidInitQueue(LinkQueue&Q);voidEnQueue(LinkQueue&Q,intx);boolDeQueue(LinkQueue&Q,int&x);boolIsEmpty(LinkQueueQ);intmain(void){LinkQueueQ;intx;InitQueue(Q);EnQueue(Q,1);EnQueue(Q,2);EnQueue(Q,3);EnQueue(Q,4);EnQueue(Q,5);EnQueue(Q,6);EnQueue(Q,7);DeQueue(Q,x);DeQueue(Q,x);DeQueue(Q,x);DeQueue(Q,x);if(!IsEmpty(Q)){printf("x=%d\n",x);}return0;}//初始化队列voidInitQueue(LinkQueue&Q){//初始时,队头和队尾指针指向头结点Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));Q.front->next=NULL;}//判断队列是否为空boolQueueEmpty(LinkQueueQ){if(Q.rear==Q.front){//队空条件returntrue;}else{returnfalse;}}//入队(带头结点)voidEnQueue(LinkQueue&Q,intx){LinkNode*s=(LinkNode*)malloc(sizeof(LinkNode));s->data=x;s->next=NULL;if(Q.front==NULL){//在空队列中插入第一个元素Q.front=s;//修改队头队尾指针Q.rear=s;}else{Q.rear->next=s;//新节点插入到rear之后Q.rear=s;//修改表尾指针}}//队头元素出队boolDeQueue(LinkQueue&Q,int&x){if(Q.front==Q.rear){//空队returnfalse;}LinkNode*p=Q.front;//p指向此次出队的节点x=p->data;//用变量x返回队头元素Q.front=p->next;//修改front指针if(Q.rear==p){//此次是最后一个节点出队Q.rear=NULL;//rear指向NULLQ.front=NULL;//front指向NULL}free(p);//释放节点空间returntrue;}boolIsEmpty(LinkQueueQ){if(Q.front==NULL){returntrue;}else{returnfalse;}}
2022-08-18 10:32 · 数据结构 / 队列 / 链式存储
[文章] class字节码文件结构
class字节码文件结构Class文件版本号和平台的对应class文件数据类型类型描述符常量类型和结构常量类型和结构细节访问标志字段表访问标志类索引、父类索引、接口索引属性的通用格式数据类型和默认初始值对应很不错的一套
2020-09-23 17:24 · java
[文章] (06)王道数据结构-顺序表的查找
/数组当前位置插入eL.data[L.length]=e;//插入后长度+1L.length++;returntrue;}}时间复杂度时间复杂度:O(1),因为在内存中是连续存放的,可以根据起始地址和数据元素大小立即找到第
2022-08-08 17:19 · 数据结构 / 查找操作 / 顺序表
[文章] 2024.3.13多益网络软开笔试记录
多益软开笔试分为以下题型:选择题15道、填空题5道、简答题4道、编程题1道        考的有一大部分是数据结构中二叉树和排序的内容(如二叉树的节点,完美二叉树的概念,排序的复杂度和排序过程等)    
2024-03-14 00:56 · 笔试
[文章] (03)王道数据结构-线性表定义和基本操作
线性表的定义**定义:**线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。
2022-08-05 10:35 · 王道 / 数据结构 / 线性表
[文章] MySQL 索引
2.索引的本质**索引是数据的一种,**MySQL数据库的数据是存储在磁盘中的,所以索引也是以文件的形式存储在磁盘中的。不过索引文件在磁盘中究竟以何种方式存储,这是由索引的数据结构来决定的。
2023-01-03 11:04 · MySQL / 数据库
[文章] (02)王道数据结构-空间复杂度
算法1:逐步递增型爱你#include<stdio.h>voidloveYou(intn);intmain(void){loveYou(3000);return0;}voidloveYou(intn){//n为问题规模inti=1;//爱你的程度while(i<=n){//每次+1i++;printf("ILoveYou%d\n",i);}printf("ILoveYouMoreThan%d\n",n);}代码分析:(1)程序运行时,会将程序代码装载进内存中,而内存中存放程序代码的部分大小是固定的,与问题规模无关(2)本程序中,装入内存的变量有局部变量i和参数n,他们所占内存空间大小是不变的(3)本程序空间复杂度:S(n)=O(1)算法2:数组的空间复杂度#include<stdio.h>intmain(void){intflag[n];//声明一个长度为n的数组,此时时间复杂度S(n)=O(n)/*下列代码空间复杂度度:S(n)=O(n*n)+O(n)+O(1)=O(n*n)*/intflag[n][n];intother[n];inti;return0;}**算法2:**递归型爱你#include<stdio.h>voidloveYou(intn);intmain(void){loveYou(5);return0;}voidloveYou(intn){//n为问题规模inta,b,c;//声明一系列局部变量if(n>1){loveYou(n-1);}printf("ILoveYou%d\n",n);}代码分析:第1层调用:n=5,a,b,c第2层调用:n=4,a,b,c第3层调用:n=3,a,b,c第2层调用:n=2,a,b,c第1层调用:n=1,a,b,c空间复杂度:等于递归调用的深度,S(n)=O(n)(去掉了常数项5)算法3:递归型爱你#include<stdio.h>voidloveYou(intn);intmain(void){loveYou(5);return0;}voidloveYou(intn){//n为问题规模intflag[n];//声明一个数组if(n>1){loveYou(n-1);}printf("ILoveYou%d\n",n);}代码分析:第1层调用:n=5,flag[5]第2层调用:n=4,flag[4]第3层调用:n=3,flag[3]第2层调用:n=2,flag[2]第1层调用:n=1,flag[1]空间复杂度:
2022-08-05 10:32 · 数据结构 / 王道 / 空间复杂度
[文章] (01)王道数据结构-时间复杂度
算法1:逐步递增型爱你#include<stdio.h>voidloveYou(intn);intmain(void){loveYou(3000);return0;}voidloveYou(intn){//n为问题规模inti=1;//爱你的程度while(i<=n){//每次+1i++;printf("ILoveYou%d\n",i);}printf("ILoveYouMoreThan%d\n",n);}(一)代码分析:(1)语句频度第09行:执行了1次第10行:执行了3001次第11行:执行了3000次第12行:执行了3000次第14行:执行了1次T(3000)=1+3001+2*3000+1(2)时间复杂度时间开销与问题规模n之间的关系T(n)=3n+3实际上时间复杂度只考虑阶数高的部分,高阶的常数项可以忽略故本代码时间复杂度为:T(n)=n(二)运算规则(三)时间复杂度排序记忆口诀:常对幂指阶算法2:嵌套循环型爱你#include<stdio.h>voidloveYou(intn);intmain(void){loveYou(5);return0;}voidloveYou(intn){//n为问题规模inti=1;//爱你的程度while(i<=n){//每次+1i++;printf("ILoveYou%d\n",i);for(intj=1;j<=n;j++){//嵌套循环两层printf("IamIronMan\n");//内层循环共执行n*n次}}printf("ILoveYouMoreThan%d\n",n);}结论:(1)顺序执行的代码只会影响常数项,可以忽略(2)只需要挑循环中的一个基本操作分析它的执行次数与n的关系即可(3)如果有多层循环嵌套,只需关注最深层循环循环了几次算法3:指数递增型爱你#include<stdio.h>voidloveYou(intn);intmain(void){loveYou(100);return0;}voidloveYou(intn){//n为问题规模inti=1;//爱你的程度while(i<=n){i=i*2;//每次翻倍printf("ILoveYou%d\n",i);}printf("ILoveYouMoreThan%d\n",n);}时间复杂度分析:(1)最深层语句频度为x(2)循环结束时满足:(3)时间复杂度:算法4:搜索数字型爱你#include<stdio.h>voidloveYou(intflag[],intn);intmain(void){intflag[]={1,2,3,4,5,6,7,8,9};loveYou(flag,5);return0;}voidloveYou(intflag[],intn){//n为问题规模printf("IAmIronMan\n");for(inti=0;i<n;i++){if(flag[i]==n){printf("ILoveYou%d\n",i);break;}}}时间复杂度分析:最好情况:元素n在第一个位置,时间复杂度为T(n)=O(1)最坏情况:元素n在最后一个位置,时间复杂度为T(n)=O(n)平均情况:元素n在任意一个位置的概率为1/n,时间复杂度为T(n)=O(n)引申出最好时间复杂度,最坏时间复杂度,平均时间复杂度
2022-08-05 10:27 · 数据结构 / 王道 / 时间复杂度
[文章] 《深入理解Java虚拟机》阅读笔记-1
使用本地内存在方法区的垃圾回收主要目的是针对常量池的回收和对类型的卸载,类型的未完全回收有概率引发内存泄漏,从而造成OOM异常对象的创建方法区检查Class类是否被加载,如果没被加载,则进行类文件加载读取Class类元数据
2022-10-29 21:50 · java / 虚拟机 / 阅读笔记
[文章] solr8 版本常用字段查找方法
代表精确到毫秒的时间点,使用基于“维度点”的数据结构进行编码,可以非常有效地搜索特定值或值的范围。有关支持的语法的更多详细信息,请参阅使用日期部分。
2020-07-19 15:09 · solr
[文章] redis
redis概念下载安装命令操作数据结构持久化操作使用Java客户端操作redisRedis概念:redis是一款高性能的NOSQL系列的非关系型数据库1.1.什么是NOSQLNoSQL(NoSQL=NotOnlySQL
2020-10-27 14:53 · redis
[文章] (16)王道数据结构-栈的顺序存储实现
方式一:#include<stdio.h>#defineMaxSize10//定义栈中元素最大个数typedefstruct{intdata[MaxSize];//静态数组存放栈中元素inttop;//栈顶指针}SqStack;voidInitStack(SqStack&S);boolStackEmpty(SqStackS);boolPush(SqStack&S,intx);boolPop(SqStack&S,int&x);intGetTop(SqStackS,int&x);intmain(void){SqStackS;intx,top;InitStack(S);Push(S,1);Push(S,2);Push(S,3);Push(S,4);Push(S,5);Push(S,6);Push(S,7);Pop(S,x);Pop(S,x);Pop(S,x);Pop(S,x);printf("x=%d\n",x);top=GetTop(S,x);printf("top=%d\n",top);if(!StackEmpty(S)){Push(S,8);printf("x=%d\n",x);}return0;}//初始化栈voidInitStack(SqStack&S){S.top=-1;//初始化栈顶指针}//判断栈空boolStackEmpty(SqStackS){if(S.top==-1){//栈空returntrue;}else{returnfalse;}}//新元素入栈boolPush(SqStack&S,intx){if(S.top==MaxSize-1){//栈满报错returnfalse;}S.top=S.top+1;//指针加1S.data[S.top]=x;//新元素入栈returntrue;}//出栈操作boolPop(SqStack&S,int&x){if(S.top==-1){//栈空,报错returnfalse;}x=S.data[S.top];//栈顶元素先出栈S.top=S.top-1;//指针减1returntrue;}//读取栈顶元素intGetTop(SqStackS,int&x){if(S.top==-1){//栈空,报错returnfalse;}x=S.data[S.top];//x记录栈顶元素returnx;}方式二#include<stdio.h>#defineMaxSize10//定义栈中元素最大个数typedefstruct{intdata[MaxSize];//静态数组存放栈中元素inttop;//栈顶指针}SqStack;voidInitStack(SqStack&S);boolStackEmpty(SqStackS);boolPush(SqStack&S,intx);boolPop(SqStack&S,int&x);intGetTop(SqStackS,int&x);intmain(void){SqStackS;intx,top;InitStack(S);Push(S,1);Push(S,2);Push(S,3);Push(S,4);Push(S,5);Push(S,6);Push(S,7);Pop(S,x);Pop(S,x);Pop(S,x);Pop(S,x);printf("x=%d\n",x);top=GetTop(S,x);printf("top=%d\n",top);if(!StackEmpty(S)){Push(S,8);printf("x=%d\n",x);}return0;}//初始化栈voidInitStack(SqStack&S){S.top=-1;//初始化栈顶指针}//判断栈空boolStackEmpty(SqStackS){if(S.top==-1){//栈空returntrue;}else{returnfalse;}}//新元素入栈boolPush(SqStack&S,intx){if(S.top==MaxSize-1){//栈满报错returnfalse;}S.data[S.top++]=x;returntrue;}//出栈操作boolPop(SqStack&S,int&x){if(S.top==-1){//栈空,报错returnfalse;}x=S.data[--S.top];returntrue;}//读取栈顶元素intGetTop(SqStackS,int&x){if(S.top==-1){//栈空,报错returnfalse;}x=S.data[S.top];//x记录栈顶元素returnx;}共享栈两个栈共享同一片空间,栈满的条件是top0+1=top1#defineMaxSize10//定义栈中元素的最大个数typedefstruct{intdata[MaxSize];//静态数组中存放栈中元素inttop0;//0号栈栈顶指针inttop1;//1号栈栈顶指针}ShStack;intmain(void){ShStackS;InitStack(S);return0;}//初始化栈voidInitStack(ShStack&S){S.top0=-1;//初始化栈顶指针S.top1=MaxSize;}
2022-08-11 18:12 · / 顺序存储
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 41