首页 > 其他分享 >数据结构 —— 线性表、栈、队列

数据结构 —— 线性表、栈、队列

时间:2023-12-18 20:44:41浏览次数:31  
标签:解析 log2 线性表 队列 复杂度 链表 int 答案 数据结构

一、算法复杂度

 

【2011】设 n 是描述问题规模的非负整数,下面的程序片段时间复杂度是()

x = 2;

while (x < n/2 ) x = 2*x;

A O( log2(n) )   B O( n )  C O( nlog2(n) )  D O( n^2 )

 

答案:A

解析:

x = 2^i = n/2

i = log2( n/2 )

 

【2012】求整数 n ( n>= 0 ) 的阶乘的算法如下,其时间复杂度()

int fact( int n ) {

  if( n<= 1 ) return 1;

  return n * fact( n-1 ); 

}

A O( log2(n) )  B O(n)   C O( n*log2(n) )   D O( n^2 )

 

答案:B

解析:

递归,O(n) 复杂度。

 

【2013】已知两个长度分别为 n 和 m 升序链表,若将它们合并为一个长度为 m+n 的降序链表,则最坏情况的时间复杂度()

A O(n)  B O(nm)  C O( min(m,n) )  D O( max(m,n) )

 

答案:D

解析:

前半段 O( n ) , 后半段 O( m - n ) , 故 O(max(m,n))

 

【2014】下列程序段时间复杂度是()

count=0;

for (k=1; k<=n; k *= 2) 

  for(j=1; j<=n; j++) 

   count++;

A O( log2(n) )  B O( n )  C O( n*log2(n) )  D O( n^2 )

 

答案:C

解析:

外层 log2(n), 内层 n 。复杂度 O( n*log2(n) )

 

【2017 】下列函数时间复杂度是()

int func( int n ) {

    int i=0, sum=0;

    while (sum<n) sum += ++i;

    return i;

}

A O(log2(n))  B O(n^0.5)  C O( n )   D O( n*log2(n) )

 

答案:B

解析:

sum = i(i + 1)/2 < n (循环条件) 

因此, i^2 < n, i = n^0.5

 

 

408真题

【2010】数组倒置。

 答案:

 

 

 

【2011】 找中位数

 

答案:

 

 

 

【2013】输出主元素,主元素是个数超过一半的元素。

 

答案:

 

 

 

【2018】找出数组中的最小正整数。

 

答案:

 

 

 

【2016】线性链表,如何删除一个结点?

 答案:D

 

 

 

【2016】线性链表物理寻址。

答案:D

 

 

【2009】倒数 K 个位置,注意指针。

答案:

 

 

解答:

 

 

 

 

 

【】

 

 

 

 

【】

 

 

 

 

 

 

 

 

 ShoelessCai.com 值得您的关注!

 

标签:解析,log2,线性表,队列,复杂度,链表,int,答案,数据结构
From: https://www.cnblogs.com/shoelesscai/p/17912203.html

相关文章

  • 数据结构算法---二叉排序树
    二叉排序树(BinarySearchTree,BST),也称为二叉搜索树或二叉查找树,是一种经典的数据结构,它满足以下性质:对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值。对于树中的每个节点,其右子树中的所有节点的值都大于该节点的值。左子树和右子树也都是二叉排序树。基于这些性......
  • 数据结构算法---冒泡排序
    冒泡排序(BubbleSort)是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻两个元素并按照大小交换位置,直到整个列表排序完成。这种排序算法得名于越小的元素会经由交换慢慢"浮"到列表的顶端。下面是冒泡排序的基本步骤:从列表的第一个元素开始,比较它与下一个元素的大小。如果......
  • 消息队列
    首先使用消息队列前,我们需要知道,消息队列是用来发送、接收数据的一个容器,简单的说:我们在某宝上买东西,这中间有一个快递的过程,而大多数情况下,我本人选择将我买的东西寄到某个代收点,派送员只需要按照我的要求将东西放到代收点就可以了,之后我有时间了才自己去取。消息队列就类似于这......
  • 数据结构与算法 第二章线性表(48课时课程笔记)Data Structure and Algorithms
    2.1线性表的类型定义一个线性表是n个数据元素的有限序列。 (1)结构初始化 InitList(&L) 构造一个空的线性表L。(2)销毁结构 DestroyList(&L)(3)引用型操作  (4)修改型操作  一个算法举例:假设有两个集合A和B分别用两个线性表LA和LB表示(即:线性表中的数据元素即为集......
  • 一文讲透消息队列RocketMQ实现消费幂等
    这篇文章,我们聊聊消息队列中非常重要的最佳实践之一:消费幂等。1基础概念消费幂等是指:当出现RocketMQ消费者对某条消息重复消费的情况时,重复消费的结果与消费一次的结果是相同的,并且多次消费并未对业务系统产生任何负面影响。例如,在支付场景下,消费者消费扣款消息,对一笔订单......
  • 2023-12/18数据结构练习
    给定一系列整型关键字和素数P,用除留余数法定义的散列函数H(Key)=Key将关键字映射到长度为P的散列表中。用线性探测法解决冲突。1#include<stdio.h>2inta[1009],b[1009];3intmain(){4intn,p;5scanf("%d%d",&n,&p);6intx,i,j;7for(i=0;i......
  • 数据结构之<树>的介绍
    树的基本概念在数据结构中,树(Tree)是一种层次结构,由节点和边组成。树的基本概念包括根节点、子节点、父节点、兄弟节点等。节点拥有零个或多个子节点,除了根节点外,每个节点有且仅有一个父节点。树的层数称为树的高度。子节点以及它后续节点所形成的数称为子树。1.二叉树(BinaryTree)二......
  • 【数据结构】第二章——线性表(1)
    导言  大家好,很高兴又和大家见面啦!!!从今天开始,我们将进入线性表的学习。  线性表是算法题命题的重点。这类算法题实现起来比较容易且代码量较少,但是要求具有最优的性能(时间复杂度、空间复杂度),因此,我们应该牢固掌握线性表的各种基本操作(基于两种存储结构),在平时的学习中多注重......
  • 线性表
    结构体结构体基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的类型。结构体定义与使用:语法:struct结构体名{   结构体成员列表};通过结构体创建变量的三种方式:struct结构体名变量名struct结构体名变量名={成员1值,成员2值……}定义结构体时顺便创建......
  • 数据结构时间复杂度
    复杂度分为时间复杂度和空间复杂度时间复杂度概念:若存在函数f(n)记作T(n)=O(f(n)).称O(f(n))为时间复杂度。T(n)为常熟操作执行次数简单理解,时间复杂度就是把T(n)简化为一个数量级,这个数量级可能为n,n^2`````` 1.常数阶这种与问题规模的大小无关(n的多少),执行时间恒定......