• 《编程珠玑》笔记二


    2008年8月14日

    (昨晚将昨天的笔记通过讯飞输入法这样记录备忘录,然后又通过人工修正,最后发布到CSDN的博客上,此过程,大概共花费了我约一个小时的时间,其中语音录入20分钟,人工修正20分钟,重新排版30分钟。)


    现在继续来看第三题。

    第三题

    题目是要我来比较不同的方法的运行时效率。方法包括:
    1. 自己系统上实现的位图排序。(嗯,因为昨天没有实现,所以这个暂时不能)
    2. 系统排序的运行时间;
    3. 习题一中排序的运行时间及潘盛内置函数的排序时间。
    且Jon先生规定输入文件为一千万个,每个数不大于一千万。


    第四题

    吉先生很调皮,他说习题三中有一个小问题,如何生成小于n,且没有重复的k个整数?
    至此,我吸取昨日的教训,决定从多个角度来回答这个问题。

    解法一

    可用攀升的内置函数生成随机数,即random.randint()因为这方法每次只能生成一个水技术,所以我们要将其稍微加工一下,使之成为深沉宿主的答案以下是我的潘神代码。

    (由于忘记了Python的随机数生成的函数名,所以我搜索了一下,查到了random的模块,同时有了意外的发现这便是方法二。)

    解法二

    先上代码
    ” import numpy
    ” 
arr = numpy.arange(10)
numpy.random.shuffle(arr)
print(arr)

    [7 4 8 3 2 9 0 1 5 6]

    摘自CSDN christianashannon先生的博客https://blog.csdn.net/christianashannon/article/details/78867204

    首先我是听说过numpy这个库的该库是由cpp实现的用来多用来实现科学计算(矩阵,向量),其中函数的性能较Python自带的同功能函数而言是提高了不少。(我目前没有考证,但是我同意该说法,因为是cpp的性能还是毋庸置疑的)

    以下是我的解读:
    经我猜测arange()函数便是生成数组0-n的函数。而np.random.shuffle(arr)便是将arr数列打乱,不知其原理为何?其效果如何?待我回去一检验,现在我还不知道如何查看python函数的源码,中午可以查一下。
    经查:

    import random
    random.__file__
    Out: '/Users/mrzhang/anaconda3/lib/python3.6/random.py'

    即在ipyhton交互环境下使用 函数名.file (双下滑线)的方法即可查看文件位置
    感谢Google-boy先生
    https://www.cnblogs.com/ylHe/p/8621786.html

    同时,这位先生还提供了另一种方法,看起来相当简洁。

    print (numpy.random.permutation(10))
    
    Out: [6 7 5 3 0 4 1 9 8 2]

    (牛皮牛皮numpy不愧是作为科学计算用的,可能是因为科学计算也是常常用到随机数列这个功能,所以python的numpy库对其支持的如此人性化,我决定晚上要看一下这个numpy的函数的源码。)

    以上两个方法便是库函数的方法。明天再来说说我自己的想法。

  • 相关阅读:
    Kotlin泛型与协变及逆变原理剖析
    struts2中action的class属性值意义
    重新设置Eclipse的workspace路径
    windows下将mysql加入环境变量
    Eclipse插件安装4种方法
    Maven常用命令
    IntelliJ IDEA光标变粗 backspace无法删除内容解决方法
    Weblogic Exception in AppMerge flows' progression
    Oracle的dual
    lgp20151222 解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
  • 原文地址:https://www.cnblogs.com/zhangnianlei/p/12239271.html
Copyright © 2020-2023  润新知