快速排序Quick Sort 快速排序的思路是依据一个“中值”数据项来把数据表分为两半:小于中值的一半和大于中值的一半, 然后每部分分别进行快速排序( 递归)如果希望这两半拥...
快速排序Quick Sort 快速排序的思路是依据一个“中值”数据项来把数据表分为两半:小于中值的一半和大于中值的一半, 然后每部分分别进行快速排序( 递归)如果希望这两半拥...
归并排序Merge Sort 下面我们来看看分治策略在排序中的应用 归并排序是递归算法, 思路是将数据表持续分裂为两半, 对两半分别进行归并排序递归的基本结束条件是:数据表仅...
希尔排序Shell Sort 我们注意到插入排序的比对次数, 在最好的情况下是O(n), 这种情况发生在列表已是有序的情况下, 实际上, 列表越接近有序, 插入排序的比对次数...
插入排序Insertion Sort 插入排序时间复杂度仍然是O(n2), 但算法思路与冒泡排序、 选择排序不同 插入排序维持一个已排好序的子列表, 其位置始终在列表的前部,...
排序:冒泡排序Bubble Sort 冒泡排序的算法思路在于对无序表进行多趟比较交换, 每趟包括了多次两两相邻比较, 并将逆序的数据项互换位置, 最终能将本趟的最大项就位 经...
二分查找 那么对于有序表, 有没有更好更快的查找算法? 在顺序查找中, 如果第1个数据项不匹配查找项的话, 那最多还有n-1个待比对的数据项 那么, 有没有方法能利用有序表的...
探索迷宫 将海龟放在迷宫中间,如何能找到出口 首先, 我们将整个迷宫的空间( 矩形)分为行列整齐的方格,区分出墙壁和通道。给每个方格具有行列位置,并赋予“墙壁”、 “通道”的...
复杂递归问题:汉诺塔 汉诺塔问题是法国数学家Edouard Lucas于1883年, 根据传说提出来的。 传说在一个印度教寺庙里, 有3根柱子, 其中一根套着64个由小到大的...
递归可视化:分形树 Python的海龟作图系统turtle modulePython内置,随时可用,以LOGO语言的创意为基础其意象为模拟海龟在沙滩上爬行而留下的足迹 爬行:...
分治策略 解决问题的典型策略: 分而治之将问题分为若干更小规模的部分通过解决每一个小规模部分问题,并将结果汇总得到原问题的解 递归算法与分治策略 递归三定律:基本结束条件,解...
队列Queue:什么是队列? 队列是一种有次序的数据集合其特征是新数据项的添加总发生在一端(通常称为“尾rear”端)而现存数据项的移除总发生在另一端(通常称为“首front...
提问 该算法的空间和时间复杂度如何 碰到大量数据会怎么样 你的设计会引发其他问题吗?例如,你设计了一种二叉查找树的变体,那么改设计是否会影响插入、查找或删除时间? 如果还有其...
栈Stack:什么是栈? 一种有次序的数据项集合, 在栈中, 数据项的加入和移除都仅发生在同一端这一端叫栈“顶top”,另一端叫栈“底base”日常生活中有很多栈的应用盘子、...
重写 如果在子类中如果有和父类同名的方法,则通过子类实例去调用方法时,会调用子类的方法而不是父类的方法,这个特点我们成为叫做方法的重写(覆盖,override) 当我们调用一...
继承 有一个类,能够实现我们需要的大部分功能,但是不能实现全部功能 如何能让这个类来实现全部的功能呢? 直接修改这个类,在这个类中添加我们需要的功能修改起来会比较麻烦,并且会...
封装是面向对象的三大特性之一 封装指的是隐藏对象中一些不希望被外部所访问到的属性或方法 如何隐藏一个对象中的属性? 将对象的属性名,修改为一个外部不知道的名字可以为对象的属性...
类(class) 什么是类我们目前所学习的对象都是Python内置的对象但是内置对象并不能满足所有的需求,所以我们在开发中经常需要自定义一些对象类,简单理解它就相当于一个图纸...
什么是对象? 对象是内存中专门用来存储数据的一块区域。 对象中可以存放各种数据(比如:数字、布尔值、代码) 对象由三部分组成:1. 对象的标识(id)2. 对象的类型(typ...
"变位词"判断问题 问题描述 所谓变位词是指两个词之间存在组成字母的重新排列关系 如:heart和earth,python和typhon 为了简单起见,假设参与判断的两个词仅...
1. a+b问题 描述 给出两个整数 a 和 b, 求他们的和。 题解 2. 尾部的零 描述 设计一个算法,计算出n阶乘中尾部零的个数例如:N = 5,N! = 120.末尾...