import timeit
import random

本人手写或借阅资料,仅供参考,有错误欢迎指正。

#2.1 设计一个实验,证明列表的索引操作为常数阶。

#2.2 设计一个实验,证明字典的取值操作和赋值操作为常数阶。

if 0:for i in range(1000, 100001, 2000):t = timeit.Timer("random.randrange(%d) in x" % i, "from __main__ import random, x")x = list(range(i))lidx_time = t.timeit(number = 1000)t = timeit.Timer("x.get(random.randrange(%d))" % i, "from __main__ import random, x")x = {j:None for j in range(i)}dget_time = t.timeit(number = 1000)t = timeit.Timer("x[random.randrange(%d)] = random.randrange(%d)" % (i, i), "from __main__ import random, x")dint_time = t.timeit(number = 1000)print("%d, %10.3f, %10.3f, %10.3f" % (i, lidx_time, dget_time, dint_time))

#2.3 列表和字典比较del 操作的性能

if 0:for i in range(1000000, 100000001, 2000000):t = timeit.Timer("del x[random.randrange(%d)]" % i, "from __main__ import random, x")x = list(range(i))lst_time = t.timeit(number = 1)x = {j:None for j in range(i)}        dict_time = t.timeit(number = 1)print("%d, %10.3f, %10.3f" % (i, lst_time, dict_time))

#2.4 给定一个数字列表,其中的数字随机排列,编写一个线性阶算法,找出第k 小的元素,

#并解释为何该算法的阶是线性的。

#O(kn)

def findkmin1(l, k):k -= 1while k:kmin, tmp= 255, 0for i in range(len(l)):if l[i] < kmin:kmin = l[i]tmp = idel l[tmp]k -= 1return min(l)

#2.5 针对前一个练习,能将算法的时间复杂度优化到O(n log n)吗?

def findkmin2(l, k):l.sort()return l[k - 1]def findminktest():l1 = [79, 58, 4, 35, 5, 6, 76, 99]l2 = [79, 58, 4, 35, 5, 6, 76, 99]print(findkmin1(l1, 4))print(findkmin2(l2, 4))

Python数据结构与算法分析(第二版)答案 - 第二章(仅供参考)相关推荐

  1. 2019第十届蓝桥杯C++B组题解(赛后重写的,不确保答案正确性,仅供参考)

    先说一下这次的感受吧,我们考场比较乱,开始比赛了,还有的电脑有故障,(向这些人发出同情),第一次认真参加比赛,真正比赛的时候感觉没有那么正式,很乱,各种小问题,(例如博主就没找到题目在哪里,找到后又不 ...

  2. 快手极速版脚本代码(仅供参考)

    home(); sleep(1500); while(click("快手极速版")) sleep(5000)//等待5svar num = 200;//想要循环几次,自己输入 ne ...

  3. RFID第二版答案-第一章

    1.1 什么是RFID? 无线电频率识别 Radio Frequency Identification 1.2 简述RFID的基本原理 通过无线电波进行识别 1.3 RFID系统有哪些工作频段 低频, ...

  4. 实验六 数组程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书答案 (纯手打, 仅供参考)

    实验8.1 //取出正整数中的偶数字,并用这些数字构成一个最大数 #include <stdio.h> #define N 10int main() {int i, j, k = 0, t ...

  5. 实验七 函数程序设计 张玉生《C语言程序设计实训教程》双色版 配套实验书答案 (纯手打, 仅供参考)

    实验10.1 //求任意两个正整数的最小公倍数 #include <stdio.h>int gbs(int m, int n) {int r, p;p = m * n;while ((r ...

  6. 实验二 数据类型、运算符与表达式→ 张玉生《C语言程序设计实训教程》双色版 配套实验书答案 (纯手打, 仅供参考)

    实验2.1 #include<stdio.h>int main() {printf("What's "); /*输出 What's */printf("you ...

  7. 实验五 循环结构程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书答案 (纯手打, 仅供参考)

    实验6.1 //程序功能:输入一个整数n,求1/1-2/3+3/5-4/7+5/9-6/11+--的前n项之和 #include <stdio.h>int main() {int i, n ...

  8. python核心教程第二版答案_python核心编程第二版第4章习题答案.docx

    python核心编程第二版第4章习题答案.docx 4-1.Python 对象.与所有 Python 对象有关的三个属性是什么?请简单的描述一下. 答案: 所有的 Python 对象都拥有三个特性:身 ...

  9. 数据结构(C语言)第二版 第四章课后答案

    数据结构(C语言)第二版 第四章课后答案 1~5 B B C A B 6~10 B B C B B 11~15 A B D (C,B) C 1.选择题 (1)串是一种特殊的线性表,其特殊性体现在(B) ...

  10. 数据结构(C语言)第二版 第三章课后答案

    数据结构(C语言)第二版 第三章课后答案 1~5 C C D A A 6~10 D A B C D 11~15 D D B C B 1.选择题 (1)若让元素1, 2, 3 , 4, 5 依次进栈,则 ...

最新文章

  1. [唐诗]古风(其二十四)-李白
  2. C++ 产生0-2之间的随机数
  3. CTF web题总结--上传文件绕过
  4. 炎炎夏日需要一个清凉的地 - 自制水冷系统
  5. WebBrowser 操作(从网上收集)
  6. cka教程_2020年11月新版CKA考试心得
  7. mysql如何选择合适的引擎
  8. 程序员的离职小技巧之如何写出让接班同事无法维护的超级代码!建议收藏
  9. Java案例实现用户登录
  10. 删除专利模板文件的最后一页(WPS亲测可用)
  11. frft雷达信号处理 论文
  12. matlab与计量经济学,matlab与计量经济学
  13. 【Python】Scrapy抓取多玩Gif图片
  14. 管螺纹如何标注_螺纹基础知识,螺纹的种类,螺纹的要素和螺纹的画法
  15. Windows设置程序开机自启动_设置程序开机自启动的几种方法_添加启动项
  16. Segger和Micrium之间的区别和联系
  17. Matlab-CSMA_CA,pure ALOHA,时隙ALOHA协议性能对比分析仿真
  18. Canvas动画案例演示,含动画猫、变幻线、代码雨等
  19. 杂项多彩_40美丽多彩的博客设计
  20. php int 32 64,php从32位升级到64位需要注意的几点

热门文章

  1. Arduino MAX30102脉搏心率传感器使用教程
  2. Java实现简单模拟购物程序
  3. 高速公路上边有没有人脸识别摄像头_人脸识别特征介绍以及难题概括
  4. Windows扫雷游戏python
  5. 评论回复功能 asp.net_抖音蓝V企业号运营必备,用户管理功能技巧大揭秘!
  6. 搜索引擎这样用才有效率
  7. python修改xml文件内容,不废话,拿来即用
  8. 5s管理常用工具汇总
  9. iphone se卡贴教程
  10. 深度学习(5)之---目标检测综述:R-CNN、mask-RCNN、YOLO、SSD原理详解