当前位置: 首页 > news >正文

数据结构考研习题精选

1 

 A假设比较t次,由于换或不换,则必然有2^t种可能。又设有n个关键字,n!排列组合,则必然有2^t>=n!,带入n即可解出。

2

 注意这里没有考虑于哨兵的比较,少了一次,所以按n*(n-1)/2可以解出比较次数是10,B

3

 注意这里增量为4要比较完整,A

 比较次数变成了nlog2n但是移动次数没有改变,还是n^2,所以时间复杂度还是O(n^2)

5

 二分的越均匀速度越快,越有序速度越慢,所以A、D

从小到大排{11,18,23,68,69,73,93},从大到小排{93,73,69,68,23,18,11},要求最终位置元素可以作为枢纽,只有3、4可以,C

 

每趟都要确定至少1个最终位置的结果,D只有1个32满足

8

可以用队列来代替栈在快速排序的过程中通过一趟划分可以把一个待排序区间分为两
个子区间然后分别对这两个子区间施行同样的划分栈的作用是在处理一个子区间时保存另
一个子区间的上界和下界(排序过程中可能产生新的左右子区间),待该区间处理完后再从栈
中取出另一子区间的边界对其进行处理这个功能用队列也可以实现只不过处理子区间的顺
序有所变动而已
9

int kth_elem(int low,int high,int k){int pivot=num[low];int low_t=low;int high_t=high;while(low<high){while(low<high && pivot<=num[high]) high--;num[low]=num[high];while(low<high && pivot>=num[low]) low++;num[high]=num[low];}num[low]=pivot;if(low==k){return num[low];}else if(low<k){return kth_elem(low+1,high_t,k);}else if(low>k){return kth_elem(low_t,low-1,k);}
}
void flag(int a[],int n){int i=0,j=0,k=n-1;while(j<=k){switch(a[j]){case red:swap(a[i],a[j]);i++,j++;break;case white:j++;break;case blue:swap(a[j],a[k]);k--;}}cout<<i<<' '<<k<<endl;for(int m=0;m<n;m++){if(m<i) cout<<red<<' ';else if(i<=m && m<=k) cout<<white<<' ';else{cout<<blue<<' ';}}
}
int best_meet(int n){int low=0,high=n-1;	int low_t=low;int high_t=high;int k=n/2;bool flag=false;while(!flag){int pivot=num[low];while(low<high){while(low<high && pivot<=num[high]) high--;num[low]=num[high];while(low<high && pivot>=num[low]) low++;num[high]=num[low];			}num[low]=pivot;if(low==k-1){flag=true;}else if(low<k){low_t=++low;high=high_t;}else if(low>k){low=low_t;high_t=--high;}		}int s1=0,s2=0;for(int i=0;i<k;i++) s1+=num[i];for(int i=k;i<n;i++) s2+=num[i];return s2-s1; 
}

10

 

 11

17B,注意是逐个插入,随时调整 

 

12

 13 

 14

0

15

 16

A 折半查找路径是一颗二叉排序树

17

 

 18

 

 注意是空间复杂度

 19

20

21

 22

A,辅助空间都是O(1)无差

23

24

 

 25

 

26

 

 

 

 

23中根节点也算分支节点

 27

 28

 

 

 

 

 

 29

 

 

 

 

 

 注意不是二叉树了

 

 

30

 31

 32

 

 

33

 

 

 

 

33

  

34

 

http://www.lryc.cn/news/26570.html

相关文章:

  • linux常用命令介绍 04 篇——uniq命令使用介绍(Linux重复数据的统计处理)
  • 网站打不开数据库错误等常见问题解决方法
  • 爬虫实战进阶版【1】——某眼专业版实时票房接口破解
  • 大话数据结构-普里姆算法(Prim)和克鲁斯卡尔算法(Kruskal)
  • UNet-肝脏肿瘤图像语义分割
  • 三周爆赚千万 电竞选手在无聊猿游戏赢麻了
  • BERT学习
  • 大话数据结构-图的深度优先遍历和广度优先遍历
  • c语言指针怎么理解 第一部分
  • 计算机网络安全基础知识2:http超文本传输协议,请求request消息的get和post,响应response消息的格式,响应状态码
  • Pytest自动化框架~权威教程03-原有TestSuite的执行方法
  • web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架
  • 【MyBatis】源码学习 05 - 关于 xml 文件解析的分析
  • 代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小子数组、59.螺旋矩阵II
  • Ethercat系列(10)用QT实现SOEM主站
  • 论文投稿指南——中文核心期刊推荐(科学、科学研究)
  • jQuery属性操作prop()、attr()和data()
  • git的使用
  • webpack生产环境配置
  • linux下安装jenkins
  • IGKBoard(imx6ull)-I2C接口编程之SHT20温湿度采样
  • MyBatis——配置文件完成增删改查
  • Python内置函数 — all,any
  • Pycharm配置QGIS环境
  • 【C++】stack 与 queue
  • ARC142E Pairing Wizards
  • Spark开发实战-主播打赏排行榜统计
  • python 如何存储数据 (python 的文件和异常)
  • 第三章-OpenCV基础-8-绘图函数
  • 逆约瑟夫问题