笔试题整理

来源:互联网 发布:利用网络学英语 编辑:程序博客网 时间:2024/06/06 12:30

一、单选题

6、以下数据结构说法,错误的是___?

A、红黑树插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(logn)

B、B+树插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(logn)

CHash表插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(n)

D、排序链表插入操作的平均时间复杂度为O(n),最坏时间复杂度为O(n)

分析:各种数据结构的search、insert和delete操作在平均情况下的时间复杂度比较

数据结构

search

insert

delete

数组

O(n),有序数组折半查找是O(lgn)

O(n)

O(n)

双向链表

O(n)

O(1)

O(1)

排序二叉树

O(lgn)

O(lgn)

O(lgn)

哈希表(n与槽数m成正比)

O(1)

O(1)

O(1)

 

第三项目组 填空与题目

19、请实现一个程序,能对点分字符串按段翻转。如"www.taobao.com”翻转为“com.taobao.www”,”sports.sina.com.cn”翻转为”cn.com.sina.sports”。要求时间复杂度为O(n),空间复杂度为O(1),结果保存在参数指针所指的空间中。

#include <stdio.h>#include <string.h>#include <string>#include <iostream>using namespace std;void swap(char &a, char &b){char tmp = a;a = b;b = tmp;}void reverse(char* str, int first, int last){if(str == NULL || first >= last)return;while(first < last){swap(str[first++], str[last--]);}}char* reverseAll(char* str){if(str == NULL)return NULL;reverse(str, 0, strlen(str) - 1);int istart = 0;for(int i = 0; i < strlen(str); ++i){if(str[i] == '.'){reverse(str, istart, i - 1);istart = i + 1;}}reverse(str, istart, strlen(str) - 1);return str;}int main(){char in[100];char* str;gets(in);str = reverseAll(in);printf("%s\n", str);return 0;}



第四项目组 综合题

某B2C网站有1亿用户和200万商品,每一个用户都有自己喜爱若干件商品,若是两个用户都喜好同一件商品,我们定义中两个用户有一个“同好商品”,“同好度”为两个用户的同好商品数和这两个用户中至少有一人喜好的商品数的比值。同好度衡量了两个用户之间的商品喜好的接近程度,这在商品推荐,SNS等领域有着重要用途。

请设计一个算法,计算每一个用户的同好用户集合及同好度。

输入数据:多个文件,每个文件的数据有多行,每一行的数据格式如下:用户ID喜好的商品ID1 喜好的商品ID2 .......喜好的商品n,此顶用户ID和商品ID均为32位整数,中心以空格分隔。

如:

16 1001 1002 3003

输出数据:一个或多个文件,每一行的数据格局如下:

用户ID 同好用户ID1:同好度 同好用户ID2:同好度......同好用户IDn:同好度

中心以空格隔开。算法可以描述为伪代码。

参考答案:http://bbs.csdn.net/topics/390738410


0 0
原创粉丝点击