• 进制

    1. 进制1.1 初识进制谈到进制相信大家都不陌生,因为我们在上小学的时候老师就教会我们大家:满10进位。今天咱们一起来了解下搞IT的程序员常说的几种进制:二进制,满二进位八进制,满八进位十进制,满十进位十六进制,满十六进位原文:https://pythonav.com/wiki/detail/1/80/

    计算机原理 1035 人阅读 0 条评论
  • 散列函数MD5/SHA和hashlib使用方法

    MDT(Message Digest)将任何长度的数据变换为固定长为128位(16字节)(数量大概是地球上沙粒数量)SHA(Secure Hash Algorithm)是另一组散列函数SHA-0/SHA-1输出散列值160位(20字节)SHA-256/SHA-244分别输出256位、224位,SHA-512/SHA-384分别输出512位和384位160位和256位的大小160位二进制相当于10的48次方,地球上水分子数量估计是47次方256位二进制相当于10的77放,一直宇宙所有基本粒子大约是72-87次方注意:虽然今年发现MD5/SHA-0/SHA-1三种散列函数,能够以极特殊的情况下来构

    计算机原理 810 人阅读 0 条评论
  • 十大经典排序算法,

    https://www.cxyxiaowu.com/2090.html

    计算机原理 1155 人阅读 1 条评论
  • python 排序算法——线性排序之基数排序(Radix sort)

    基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。

    计算机原理 1326 人阅读 0 条评论
  • python 排序算法——线性排序之计数排序(Counting sort)

    计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的空间复杂度和时间复杂度为Ο(n+k),其中k是整数的范围;快于任何比较排序算法。

    计数排序是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)。


    计算机原理 1456 人阅读 0 条评论
  • python 排序算法——线性排序之桶排序

    桶排序,顾名思义,会用到「桶」,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。

    计算机原理 1432 人阅读 0 条评论
  • 递归:如何用三行代码找到“最终推荐人”?

    推荐注册返佣金的这个功能我想你应该不陌生吧?现在很多 App 都有这个功能。这个功能中,用户 A 推荐用户 B 来注册,用户 B 又推荐了用户 C 来注册。我们可以说,用户 C 的“最终推荐人”为用户 A,用户 B 的“最终推荐人”也为用户 A,而用户 A 没有“最终推荐人”。一般来说,我们会通过数据库来记录这种推荐关系。在数据库表中,我们可以记录两行数据,其中 actor_id 表示用户 id,referrer_id 表示推荐人 id。为什么使用递归?递归的优缺点?优点:代码的表达力很强,写起来简洁。缺点:空间复杂度高、有堆栈溢出风险、存在重复计算、过多的函数调用会耗时较多等问题。关于走楼梯

    计算机原理 1117 人阅读 1 条评论
  • 栈stack 三种含义是什么?是哪三种含义?

    栈stack 这个词有三种含义,适用于不同场合,必须需要明确区分。第一种含义:数据结果stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。在这种数据结构中,数据像积木那样一层层堆起来,后面加入的数据就放在最上层。使用的时候,最上层的数据第一个被用掉,这就叫做"后进先出"。与这种结构配套的,是一些特定的方法,主要为下面这些。push:在最顶层加入数据。pop:返回并移除最顶层的数据。top:返回最顶层数据的值,但不移除它。isempty:返回一个布尔值,表示当前stack是否为空栈。第二种含义:代码运行方式

    计算机原理 1320 人阅读 0 条评论
  • 如何使用栈来浏览器的前进和后退功能?

    栈是什么?堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。

    计算机原理 1306 人阅读 2 条评论
  • 链表(下):如何轻松写出正确的链表代码?

    第一:理解指针或引用的含义有些语言有“指针”的概念,比如 C 语言;有些语言没有指针,取而代之的是“引用”,比如 Java、Python。不管是“指针”还是“引用”,实际上,它们的意思都是一样的,都是存储所指对象的内存地址。什么是指针:将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。第二:警惕指针丢失和内存泄漏对于有些语言来说,比如 C 语言,内存管理是由程序员负责的,如果没有手动释放结点对应的内存空间,就会产生内存泄露。所以,我们插入结点时,一定要注意操作的顺序,要先将结点 x 的 next

    计算机原理 1090 人阅读 0 条评论