第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)的更多相关文章

  1. 算法导论第九章 第K顺序统计量

    1.第K顺序统计量概念 在一个由n个元素组成的集合中,第k个顺序统计量是该集合中第k小的元素.例如,最小值是第1顺序统计量,最大值是第n顺序统计量. 2.求Top K元素与求第K顺序统计量不同 Top ...

  2. C++算法导论第九章O(n)期望选择序列第i小的数字

    #include<iostream> #include<vector> #include<algorithm> #include<time.h> usi ...

  3. 算法导论 第一章and第二章(python)

    算法导论 第一章 算法     输入--(算法)-->输出   解决的问题     识别DNA(排序,最长公共子序列,) # 确定一部分用法     互联网快速访问索引     电子商务(数值算 ...

  4. 为什么我要放弃javaScript数据结构与算法(第九章)—— 图

    本章中,将学习另外一种非线性数据结构--图.这是学习的最后一种数据结构,后面将学习排序和搜索算法. 第九章 图 图的相关术语 图是网络结构的抽象模型.图是一组由边连接的节点(或顶点).学习图是重要的, ...

  5. 《算法导论》— Chapter 9 中位数和顺序统计学

    序 在算法导论的第二部分主要探讨了排序和顺序统计学,第六章~第八章讨论了堆排序.快速排序以及三种线性排序算法.该部分的最后一个章节,将讨论顺序统计方面的知识. 在一个由n个元素组成的集合中,第i个顺序 ...

  6. 算法导论 (Thomas H.Cormen / Charles E.Leiserson / Ronald L.Rivest / Clifford Stein 著)

    第一部分 基础知识 第1章 算法在计算中的作用 第2章 算法基础 第3章 函数的增长 第4章 分治策略 第5章 概率分析和随机算法 第二部分 排序和顺序统计量 第6章 堆排序 第7章 快速排序 第8章 ...

  7. 【机器学习实战 第九章】树回归 CART算法的原理与实现 - python3

    本文来自<机器学习实战>(Peter Harrington)第九章"树回归"部分,代码使用python3.5,并在jupyter notebook环境中测试通过,推荐c ...

  8. 《python for data analysis》第九章,数据聚合与分组运算

    # -*- coding:utf-8 -*-# <python for data analysis>第九章# 数据聚合与分组运算import pandas as pdimport nump ...

  9. python 教程 第九章、 类与面向对象

    第九章. 类与面向对象 1)    类 基本类/超类/父类被导出类或子类继承. Inheritance继承 Inheritance is based on attribute lookup in Py ...

随机推荐

  1. spring mvc No mapping found for HTTP request with URI [/web/test.do] in DispatcherServlet with name 'spring'

    原因: spring-servlet.xml 中 <context:component-scan base-package="com.test.controller" /&g ...

  2. Android逆向分析工具表

    逆向分析工具表 工具 描述 网址 androidterm Android Terminal Emulator http://code.google.com/p/androidterm/ droidbo ...

  3. C#将excel数据按照需求导入Sql server遇到的问题(参考而已)

    1.千万不要使用永中表格(WPS没用过,这里只是个人观点,不是说永中表格的) 我在公司得到的任务是将excel数据按照需求导入数据库总共主表大概3张,所以有点复杂(列子用的简单表,公司东西还是不要放出 ...

  4. AJPFX关于部分String类方法

    string类使用于描述字符串事物常见的操作:1.获取:  1.1 字符串中的包含的字符数,也就是字符串的长度        int length():获取字符串的长度 1.2 根据位置获取位置上的某 ...

  5. 初识Vivado

    Vivado 设计套件包括高度集成的设计环境和新一代从系统到 IC 级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上.这也是一个基于 AMBA AXI4 互联规范.IP-XACT IP ...

  6. Thrift入门及Java实例演示【转】

    概述 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++.Java.Python.PHP.Ruby.Erlang.Perl.Ha ...

  7. 【HEVC帧间预测论文】P1.2 An Efficient Inter Mode Decision Approach for H.264 Video Codin

    参考:An Efficient Inter Mode Decision Approach for H.264 Video Coding <HEVC标准介绍.HEVC帧间预测论文笔记>系列博 ...

  8. 移除sql数据所有链接用户

    use master;   go   declare @temp nvarchar(20)   declare myCurse cursor   for   select spid   from sy ...

  9. uva12433 Rent a Car

    init 一开始搞成2*n+2了...囧  所以初始化很重要! 然后提交的时候忘了删调试的数据了..囧 技巧:设立虚拟节点 建图比较麻烦(非常). 要考虑到保养完了的车可以免费再用 设立S,T  ,1 ...

  10. core mvc 分页

    看了下XPAGE感觉还是用的不太爽,自己写了个,样式是bootstrap的,需要的小伙伴拿走吧. public static IHtmlContent Pager(this IHtmlHelper h ...