编程珠玑 第二章 习题6~9

  • 习题6:定义一个多映射multimap数据结构:map<int, list<string>  >。首先把名字的按键编码(int型)作为名字的标识,根据标识进行排序,当标识相同时,根据名字排序(字典排序);multimap结构中第一位存储名字标识,第二位存储名字,标识相同的名字构成链表,由于multimap本身的各个条目会自动排序,所以省略了标识间的排序;当以按键编码为参数进行查询时,选择二分搜索方法进行结果输出。
  • 习题7:利用桶排序算法原理,因为数据在磁带中存储,所以只能顺序读取矩阵元素,构建和矩阵列数量相同的桶,桶内部选择链表结构,顺序存储。矩阵每行的每个元素放入不同的桶中,形成自然的顺序结构,当所有矩阵元素都存储到对应的桶中后,顺序读取每一个桶和每一个桶中的元素,最后的结果就是原来矩阵的转置。
  • 习题8:先将给定的n元实数集合排序,可以选择快排方法,然后计算前k个实数的和,如果结果小于t,则存在题目要求的k元子集。
  • 习题9:对于顺序搜索,搜索k次的时间复杂度为O(kn);若采用二分搜索则需要先排序,则二分搜索的时间复杂度为O(nlog10(n)+log2(n))。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值