分类
外汇剥头皮交易策略基础知识介绍

能在K线当中看出来什么?

最新对比跑分,Mac为低配版

tail -f 查找关键字_九种查找算法

weixin_39941721 于 2020-11-20 15:44:37 发布 2375 收藏 2

b1c45034b9e0120b4bc9baabf8bf562b.png

时间、空间复杂度比较

能在K线当中看出来什么?
查找算法平均时间复杂度空间复杂度查找条件
顺序查找O(n)O(1)无序或有序
二分查找(折半查找)O(log2n)O(1)有序
插值查找O(log2(log2n))O(1)有序
斐波那契查找O(log2n)O(1)有序
哈希查找O(1)O(n)无序或有序
二叉查找树(二叉搜索树查找)O(log2n)能在K线当中看出来什么?
红黑树O(log2n)能在K线当中看出来什么? 能在K线当中看出来什么?
2-3树O(log2n - log3n)
B树/B+树O(log2n)

1 顺序查找

算法思路

代码

运行结果

查找成功 查找失败

2 二分查找(折半查找)能在K线当中看出来什么?

算法思路

说明

在做查找的过程中,如果 low 指针和 high 指针的中间位置在计算时位于两个关键字中间,即求得 mid 的位置不是整数,需要统一做取整操作。

代码

运行结果

查找成功 没有查找到

3 插值查找

算法思路

说明

  • 插值查找是基于折半查找进行了优化的查找方法。
  • 当表长较大,而关键字分布又比较均匀的查找表来说,插值查找算法的平均性能要比折半查找要好得多。

代码

运行结果

0da80aeef0d4bfbbfe26658753f00b33.png

运行结果

4 斐波那契查找

算法思路

说明

low=mid+1说明待查找的元素在[mid+1,high]范围内,k-=2 说明范围[mid+1,high]内的元素个数为n-(F(k-1))= Fk-1-F(k-1)=Fk-F(k-1)-1=F(k-2)-1个,所以可以递归的应用斐波那契查找。

代码

运行结果

a1a95d782e38fde6c369b91adce9036e.png

47的位置为5

5 哈希查找

哈希表

哈希函数

算法思路

  1. 用给定的哈希函数构造哈希表;
  2. 根据选择的冲突处理方法(常见方法:拉链法和线性探测法)解决地址冲突;
  3. 在哈希表的基础上执行哈希查找;

代码

6 二叉树查找

算法思路

  1. 若b是空树,则搜索失败:
  2. 若x等于b的根节点的数据域之值,则查找成功:
  3. 若x小于b的根节点的数据域之值,则搜索左子树:
  4. 查找右子树。

代码

7 2-3树

算法思路:

2-3 树中查找键为H的节点 2-3 树中查找键为B的节点

代码

8 红黑树

理解红黑树一句话就够了:红黑树就是用红链接表示3-结点的2-3树

849deb772098c055e8f8f043cae0c2c8.png

2-3树转红黑树

为什么使用红黑树

  • 红黑树是一种平衡树,他复杂的定义和规则都是为了保证树的平衡性。如果树不保证他的平衡性就是下图:很显然这就变成一个链表了。
  • 保证平衡性的最大的目的就是降低树的高度,因为树的查找性能取决于树的高度。所以树的高度越低搜索的效率越高!
  • 这也是为什么存在二叉树、搜索二叉树等,各类树的目的。

红黑树性质

  • 每个节点要么是黑色,要么是红色。
  • 根节点是黑色。
  • 每个叶子节点(NIL)是黑色。
  • 每个红色结点的两个子结点一定都是黑色。
  • 任意一结点到每个叶子结点的路径都包含数量相同的黑结点。

算法思路

红黑树的思想就是对2-3查找树进行编码,尤其是对2-3查找树中的3-nodes节点添加额外的信息。红黑树中将节点之间的链接分为两种不同类型,红色链接,他用来链接两个2-nodes节点来表示一个3-nodes节点。黑色链接用来链接普通的2-3节点。特别的,使用红色链接的两个2-nodes来表示一个3-nodes节点,并且向左倾斜,即一个2-node是另一个2-node的左子节点。这种做法的好处是查找的时候不用做任何修改,和普通的二叉查找树相同

代码

9 B树/B+树

  • 定义任意非叶子结点最多只有M个儿子;且M>2;
  • 根结点的儿子数为[2, 能在K线当中看出来什么? M];
  • 除根结点以外的非叶子结点的儿子数为[M/2, M];
  • 每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)
  • 非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];
  • 非叶子结点的指针:P[1], P[2], …, P[M];其中P[1]指向关键字小于K[1]的 子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树;
  • 所有叶子结点位于同一层;

d12781d13d68eb7c95f4aaef23c15ff3.png

如:(M=3)

算法思路

  • 关键字集合分布在整颗树中;
  • 任何一个关键字出现且只出现在一个结点中;
  • 搜索有可能在非叶子结点结束;
  • 其搜索性能等价于在关键字全集内做一次二分查找;
  • 自动层次控制;

代码

B+树

  • 非叶子结点的子树指针与关键字个数相同;
  • 非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树, B树是开区间
  • 为所有叶子结点增加一个链指针;
  • 所有关键字都在叶子结点出现;

38b09f5caf5aaa6ad6cf7f14b5077b0b.png

1

iPad Pro 2020 的实际体验如何?值得入手吗?

最新对比跑分,Mac为低配版

目前,苹果唯一一款带Face ID的“电脑”

我这款是iPad Pro 11 英寸 512G,视频更新了下加了新内容

外形如何?会不会弯

会不会弯?材质目前体验是一样的还是。很薄,弯的话真的个人感觉还好,还是平时带带套比较稳妥。因为iPad Air也会弯呀。是薄的就可能会弯的。预算够的当然再买个Apple care就更好了,随便裸奔,随便浪。

正面对比,能看出哪个是新款不?不可能看出来啦 边框 摄像头对比 背面对比 C口 数据线 摄像头特写

新款性能到底如何?

2018 iPad Pro 11英寸 2020 iPad Pro 11英寸

这是为啥呢?新款性能还不如旧款吗?

3.27更新:老外最新消息,之前的A12X GPU7核说是其实也是8核,被Apple自己封印内力,Apple NB!

摄像头的提升作用到底有多少?

这次iPad Pro升级最值得的地方是哪里?

图取自Apple

图取自Apple 官方视频

epub怎么打开?

Cindy ​

方法1:使用专门的EPUB阅读器

如果你想要最好的阅读体验,建议使用专门的ePub阅读软件,比如Neat Reader,它提供了电脑和手机端的软件,还支持把书存在云端,自动同步数据。专门的软件,好处就是把ePub文件的特点都能展现出来,比如让你可以点击放大查看图片,可以修改字体、字号之类的。下面就是Neat Reader的截图,还有打开一本书在不同配色下的效果。(手机端我就不截图了,我用的不多)

Python基础之程序暂停

zxnode 于 2018-09-03 12:34:57 能在K线当中看出来什么? 发布 74609 收藏 55

input()

  • 优点:不需要借助模块,执行到此处阻塞等待人工输入。
  • 缺点:程序结束时候需要强制结束或者在控制台输入值。

time.sleep()

  • 优点:动态等待程序执行完毕,不需要强行终止,等待时间可调。
  • 缺点:需要导入模块,等待规定时间结束后便继续往下执行。

os.system("pause")

  • 优点:不必强行终止;不必等待时间,可自由按下enter继续。
  • 缺点:导入模块,执行系统命令。

将进程挂起(Suspend) 而非 阻塞(Block) 如果用sleep() 进程将阻塞 假设进程下有两个线程 那么这两个线程会继续运行 要使进程挂起 可以考虑使用psutil import psutil p = psutil.Process(pid) p.suspend() #挂起进程 能在K线当中看出来什么? p.resume() #恢复进程 能在K线当中看出来什么? 为了证明效果 我写了一个简单的进程Process 其下有两个线程 读者Reader 和 写者Writer(简单的读者写者问题) Process: import threading from time import ctime, sleep import Threa

在使用python时,经常会暂停(不是停止)运行程序查看结果,网上的方法比较多,但都会用到专用的库,因此比较麻烦且繁琐。考虑到使用python经常会用到opencv库,所以可以使用opencv库中的相关函数进行实现。 使用到的函数或库 1.cv2.imshow() 2.cv2.waitKey() 3.time.sleep() 4.cv2.putText() 5.np.zeros() 程序如下 程序说明: 运行后,无操作则等待一段时间后继续运行程序;若按空格键暂停运行程序,再按空格键继续运行程序。 import time import cv2 import numpy as np def pa

03-12 2492

Python3中已经有很大一部分语句与Python2不互通了,运行暂停的方法也有所不同。 1、input(); 这种方法不用包含模块,因此这也是最常用的一种暂停手段。 Python2中的raw_input()和input()语句在Python3中已经被合并到input()中。 2、os.system("pause"); 这种方法需要包含os模块(import os),在windows下IDLE运行会弹出cmd命令行

11-25 2442