算法导论 第九章 中位数和顺序统计量(python)
第i个顺序统计量:该集合中第i小的元素(建集合排序后第i位 当然算法可以不排序)
中位数:集合中的中点元素
下中位数
上中位数
9.1最大值和最小值
单独的max或min每个都要扫一遍 n-1次比较
如果同时找max和min 要
:1.2个数相互比较 1次{每次选出2个 选n//2次}
2.大的和max比较
3.小的和min比较
找出序列为第i小的数Θ(n)
随机快速排序的运用:(可以回去看快排)
代码:
import random def PARTTION(A,p,r):
x = A[r]
i = p -1
for j in range(p,r):
if A[j] <= x:
i += 1
A[j],A[i] = A[i],A[j]
i += 1
A[r],A[i] = A[i],A[r]
print(x,A)
return i def RANDOMIZED_PARTITION(A,p,r):
#主元随机化处理
t = random.randint(p,r)
A[t],A[r] = A[r],A[t]
return PARTTION(A,p,r) def RANDOMIZED_SELECT(A,p,r,i):
#A 要查找的list
#p 左边界
#r 右边界
#i 值[p,r]中第i位
if p == r: #只有一位
return A[p] q = RANDOMIZED_PARTITION(A,p,r) #快排关键代码 分成俩半
k = q - p + 1
if i == k:
return A[q]
elif i < k:
return RANDOMIZED_SELECT(A,p,q-1,i)
else:
return RANDOMIZED_SELECT(A,q+1,r,i-k) if __name__ == "__main__":
A = [89, 100, 21, 5, 2, 8, 33, 27, 63]
print(RANDOMIZED_SELECT(A,0,len(A)-1,2)) #查找第二位 '''
>>>
=========== RESTART: F:/python/algorithms/9_3_randomized_select.py ===========
63 [21, 5, 2, 8, 33, 27, 63, 100, 89]
21 [5, 2, 8, 21, 33, 27, 63, 100, 89]
5 [2, 5, 8, 21, 33, 27, 63, 100, 89]
5 win7+python3.5.1
>>>
'''
算法导论 第九章 中位数和顺序统计量(python)的更多相关文章
- 算法导论第九章 第K顺序统计量
1.第K顺序统计量概念 在一个由n个元素组成的集合中,第k个顺序统计量是该集合中第k小的元素.例如,最小值是第1顺序统计量,最大值是第n顺序统计量. 2.求Top K元素与求第K顺序统计量不同 Top ...
- C++算法导论第九章O(n)期望选择序列第i小的数字
#include<iostream> #include<vector> #include<algorithm> #include<time.h> usi ...
- 算法导论 第一章and第二章(python)
算法导论 第一章 算法 输入--(算法)-->输出 解决的问题 识别DNA(排序,最长公共子序列,) # 确定一部分用法 互联网快速访问索引 电子商务(数值算 ...
- 为什么我要放弃javaScript数据结构与算法(第九章)—— 图
本章中,将学习另外一种非线性数据结构--图.这是学习的最后一种数据结构,后面将学习排序和搜索算法. 第九章 图 图的相关术语 图是网络结构的抽象模型.图是一组由边连接的节点(或顶点).学习图是重要的, ...
- 《算法导论》— Chapter 9 中位数和顺序统计学
序 在算法导论的第二部分主要探讨了排序和顺序统计学,第六章~第八章讨论了堆排序.快速排序以及三种线性排序算法.该部分的最后一个章节,将讨论顺序统计方面的知识. 在一个由n个元素组成的集合中,第i个顺序 ...
- 算法导论 (Thomas H.Cormen / Charles E.Leiserson / Ronald L.Rivest / Clifford Stein 著)
第一部分 基础知识 第1章 算法在计算中的作用 第2章 算法基础 第3章 函数的增长 第4章 分治策略 第5章 概率分析和随机算法 第二部分 排序和顺序统计量 第6章 堆排序 第7章 快速排序 第8章 ...
- 【机器学习实战 第九章】树回归 CART算法的原理与实现 - python3
本文来自<机器学习实战>(Peter Harrington)第九章"树回归"部分,代码使用python3.5,并在jupyter notebook环境中测试通过,推荐c ...
- 《python for data analysis》第九章,数据聚合与分组运算
# -*- coding:utf-8 -*-# <python for data analysis>第九章# 数据聚合与分组运算import pandas as pdimport nump ...
- python 教程 第九章、 类与面向对象
第九章. 类与面向对象 1) 类 基本类/超类/父类被导出类或子类继承. Inheritance继承 Inheritance is based on attribute lookup in Py ...
随机推荐
- 合作网络(Corporative Network )并查集+路径压缩
#include <iostream> #include <algorithm> #include <string> using namespace std; + ...
- (四)python自带解释器(IDLE)的使用
什么是IDE? Integrated Development Environment(集成开发环境) 打个不恰当的比方,如果说写代码是制作一件工艺品,那IDE就是机床.再打个不恰当的比方,PS就是图片 ...
- Oracle JDK各版本下载地址记录
Oracle JDK各版本下载地址: https://www.oracle.com/technetwork/java/javase/archive-139210.html
- 浅析String
浅析String String的设计结构: 首先我们看一下 String的源码 public final class String implements java.io.Serializabl ...
- [在读]javascript框架设计
司徒正美的书,内容我觉得不错,国内的书很少会讲这些.当然也有很多人吐槽它只贴代码没有解释,文笔不够优美啥啥的,我想说,不要在意这些细节,反正是值得买的一本.
- Oozie是什么?
但是,一般用Azkaban了.(具体见我写的另一篇博客:) 官网:https://oozie.apache.org/ Oozie is a workflow scheduler system ...
- json和php数组 格式的互相转换
$json_arr = array('WebName'=>'PHP网站开发教程网','WebSite'=>'http://www.jb51.net'); $php_json = json ...
- 外文翻译 《How we decide》多巴胺的预言 第三节
这是第二章的最后一节. 书的导言 本章第一节 本章第二节 本节阅读感言:自我批评是自我提升的妙方. 多巴胺是我们感情的源泉.多巴胺相关的神经系统在不断的记录着我们主观意识没有注意到的一个个模式,将它们 ...
- PHP设计模式 原型模式(Prototype)
定义 和工厂模式类似,用来创建对象.但实现机制不同,原型模式是先创建一个对象,采用clone的方式进行新对象的创建. 场景 大对象的创建. 优点 1.可以在运行时刻增加和删除产品 2.可以改变值或结构 ...
- 基于udp协议的套接字及udp协议粘包问题
udp协议的套接字 udp协议传输 服务端和客户端没有建立连接一说. import socket # 总结一下基础工作流程:服务端生成套接字并绑定ip_port,进入数据传输循环,服务端接受客户端发 ...