霍尔介绍

霍尔 (Sir Charles Antony Richard Hoare) 是一位英国计算机科学家,他也是著名的快速排序算法的发明者。他出生于斯里兰卡,1956年毕业于牛津大学。然后的两年里他服役于英国皇家海军,主要工作任务是研究俄国的现代军事,并因为这个原因开始学习俄语。在他结束服役后,他以研究生的身份进入莫斯科大学主攻计算机翻译。在莫斯科学习的一年中,因为偶然的机会他为参加展览的公司Elliott Brothers充当翻译。当他回国后,这家公司立即聘用了他,因为霍尔会俄语的缘故,公司还为他增加了工资。


快速排序算法起源

1960年代,英国国家物理实验室 (National Physical Laboratory) 开始了一项新的计划:将俄文自动翻译成英文。正好霍尔有这个经历,他与俄国的机器翻译专家相识,还在“机器翻译”(Machine Translation) 上发表过论文。于是他在那里得到了一份工作。

在那个年代,俄文到英文的词汇列表是以字母顺序存储在一条长长的磁带上的。因此,当有一段俄文句子需要翻译时,第一步是把这个句子的词按照同样的顺序排列。这样机器就可以在磁带上只走一遍就可以找到所有的翻译。霍尔意识到,他必须找出一种能在计算机上实现的排序的算法来。他想到的第一个算法是后人称作“冒泡排序 (bubble sort)”的算法。虽然他没有声明这个算法是他发明的,但他显然是独自得到这个算法的。他很快放弃了这个算法,因为它的速度比较慢。用计算复杂度理论 (Computational complexity theory) 来说,它平均需要 O(n2) 次运算。快速排序 (Quicksort) 是霍尔想到的第二个算法。这个算法的计算复杂度是 O(nlogn) 次运算。当 n 特别大的时候,显然步骤要少很多。


霍尔的其他建树

  • 霍尔本人被称为“影响算法世界的十位大师之一”
  • 由霍尔发明的快速排序算法被称为“二十世纪十大算法之一”
  • 霍尔领导了Algol 60第一个商用编译器的设计与开发,由于其出色的成绩,最终成为该公司首席科学家
  • 因霍尔对Algol 60程序设计语言理论、互动式系统及APL的贡献,1980年被美国计算机协会授予“图灵奖”
  • 2000年因为其在计算机科学与教育上做出的贡献被封为爵士

说明

  • 本篇文章参考了该文章《霍尔和快速排序法》。链接如下:http://blog.sciencenet.cn/blog-420554-552107.html
  • 如有侵权,请随时联系我,立马删除

快速排序算法的发明者霍尔相关推荐

  1. 【图文解释】快速排序算法

    高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6  1  2 7  9  3   ...

  2. 000 快速排序算法

    一:概述 快速排序是东尼.霍尔所发展的一种快速排序算法. 对于n个项目的排序,平均O(n*logn)次比较,在比较糟糕的情况下是O(n2)次比较. 采用分治策略把一个串行分为两个子串行. 二:步骤 从 ...

  3. C语言-快速排序算法(递归Hoare版)

    废话不多说,先看代码 #define _CRT_SECURE_NO_WARNINGS 1 //快速排序算法,递归求解 #include <stdio.h> void swap(int* a ...

  4. 快速排序_详解快速排序算法

    快速排序(Quicksort),计算机科学词汇,适用领域Pascal,c++等语言,是对冒泡排序算法的一种改进. 快速排序的排序流程 快速排序算法通过多次比较和交换来实现排序,其排序流程如下: (1) ...

  5. 快速排序算法详解(原理,时间复杂度,实现代码)

    快速排序算法详解(原理.实现和时间复杂度) 快速排序是对冒泡排序的一种改进,由 C.A.R.Hoare(Charles Antony Richard Hoare,东尼·霍尔)在 1962 年提出. 快 ...

  6. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  7. 快速排序算法实现思想个人理解

    一.概述 快速排序是冒泡排序的改进算法.它也是通过不断比较和移动交换来实现排序的,只不过它的实现增大了记录的比较和移动的距离,将关键字较大的元素从前面直接放到后面,关键字较小的元素直接从后面放到前面, ...

  8. 快速排序算法(基于Java实现)

    title: 快速排序算法(基于Java实现) tags: 快速排序算法 快速排序算法的原理与代码实现: 一.快速排序算法的原理 快排算法的思想是: 如果需要排序数组中下标从p到r之间的一组数据,我们 ...

  9. java sort算法名称_快速排序算法(Quick Sort)(java)

    /** * 快速排序算法是基于分治策略的一种排序算法,下面是一个递归的快速排序. * @author liuy */ public class QuickSort { public static vo ...

  10. 【算法】快速排序算法的编码和优化

    参考资料 <算法(第4版)>          - - Robert Sedgewick, Kevin Wayne <啊哈! 算法>              - - 啊哈磊 ...

最新文章

  1. html文件girlfriend,index.html
  2. 基于FPGA的超声波数据图像显示
  3. app图标圆角角度_教你如何绘制风格统一的APP界面图标
  4. 一个小厂前端 Leader 如何筛选候选人?
  5. PL/SQL包(Package)
  6. Python几十行代码轻松实现微信自动回复机器人
  7. UltraISO 软碟通制作 Windows 7 系统 U 盘启动盘
  8. 联想笔记本小新V2000怎么进BIOS设置
  9. Android控件之Button
  10. u8反启用固定资产_U8和T3固定资产没有启用不能结账的处理方法
  11. 等保2.0.第十一章.等保2.0实战(上)
  12. 信息安全实训笔记1——身份认证技术
  13. 3DS动物之森不完全攻略整合
  14. P1456 Monkey King
  15. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
  16. 华为路由交换学习篇-STP生成树协议
  17. 「CSA49」Bunny on Number Line
  18. jmeter登录压力测试完整的例子
  19. 互联网赚钱:普通人月入上万的秘密,连载4
  20. 电视机防近视预警系统c语言,预防近视、提升视力 TCL儿童电视亮相重庆

热门文章

  1. 嵌入式linux:通过qemu模拟mini2440开发环境
  2. 互联网之子——亚伦·斯沃茨:新时代网络自由的先驱
  3. GPT分区表的备份与恢复
  4. 使用BeautifulSoup,解释器报错‘lxml‘
  5. Windows10系统C盘文件实际大小占用空间和可用空间不一致(相差差8到20G)
  6. Java实现 LeetCode 274 H指数
  7. 中央台“互联网时代”纪录片分集要点
  8. 贝叶斯网络(belief network)
  9. js闭包循环原因_「js基础」JavaScript入门,难不难你来说
  10. 编程求一元二次方程的解