1、将元素“42,30,74,56,15,60”依次插入开始为空的检索树,那么不成功查找的平均查找长度为 3 (21/7),不成功的结点为7,2×2+3×3+2×4=21;
2、具有5层结点的AVL树至少有 12 个结点
3、时间复杂度不受数据初始状态影响而恒为O(nlogn)的是 堆排序
4、高为h的m元树(m≥2, h≥1)中结点总数n<=(mh-1)/(m-1)
5、已知一棵二叉树的先序序列是A,B,C,D,E,F,G,和整数序列3,0,0,6,0,0,0。其中,整数序列中的第i个数,表示先序序列第i个结点的右儿子在先序序列中的序号(序号从1编起,0表示无右儿子)。请问此二叉树中以结点D为根的子树的结点个数为 4
6、就排序算法所用的辅助空间而言,堆排序、快速排序、归并排序的关系是,堆排序<快速排序<归并排序
7、二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则A的第8列和第5行共占108个字节,第8列9个元素,第5行10个元素,共9+10-1个元素,18×6==108;
8、设一棵二叉树的结点个数为18,则它的高度至少为 5,2h-1,24-1==15
9、在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是,直接插入排序;
10、对关键字序列(56,23,78,92,88,67,19,34)进行增量为3的一趟希尔排序的结果为(19,23,67,56,34,78,92,88);56,92,19;23,88,34;78,67;增量为3的,三组分别排序;一趟后,结果19,23,67,56,34,78,92,88;
11、采用排序算法对n个元素进行排序,其排序趟数肯定为n-1趟的排序方法是,直接选择和插入 ;A 直接插入和快速排序,B 冒泡和快速排序,C 直接选择和堆排序,D 直接选择和插入排序
12、设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列( 堆排序 )方法可以达到此目的,A 快速排序,B 直接选择排序,C 归并排序,D 堆排序;
13、在对n个元素进行选择排序的过程中,第i趟需从 n-i+1 个元素中选出最小值元素;第i趟,是从1开始计算的,没有第0趟,第一趟即 n-1+1,从n个元素中选择;
14、c++,string 类对象str,str.erase(remove_if(str.begin(), str.end(), ispunct), str.end()); ,其中string类的成员函数erase,begin,end;remove_if函数包含在<algorithm>头文件,ispunct函数包含在<cctype>头文件,<iostream>包含<cctype>头文件;
#include <iostream> #include <map> #include <string> #include <algorithm> using namespace std; /*单词计数器 */ string& strip(string &str) { for (auto &ch : str) ch = tolower(ch);// 转成小写 str.erase( remove_if ( str.begin(), str.end(), static_cast<int(*)(int)>(&ispunct) ), str.end()); return str; }; std::map<std::string, std::size_t> count() { std::map<std::string, std::size_t> counts; for (string w; cin >> w; ++counts[strip(w)]) ; return counts; } void println(std::map<std::string, std::size_t> const &m) { for (auto const &kv : m) { cout << kv.first << " -- " << kv.second << endl; } } int main() { println(count()); cin.clear(); return 0; }