`
samwalt
  • 浏览: 285568 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

外部排序ruby实现

 
阅读更多
# value 数组类型,存储待比较大小的元素。数组长度比败者树数组长度大1
# loser_tree 数组类型,败者树。数组元素是value数组的索引
# node 待调整的叶子结点在value数组中的索引
def adjust_loser_tree(value, loser_tree, node)
    # 求叶子结点的父结点在败者树中的索引
    t = (node + loser_tree.size) / 2
    while t > 0
	if value[node].email > value[loser_tree[t]].email
	    tmp = node
	    node = loser_tree[t]
	    loser_tree[t] = tmp
	end
	t /= 2
    end
    loser_tree[t] = node
end

# 创建败者树
def create_loser_tree(value, loser_tree)
    # 初始化败者树数组
    0.upto(loser_tree.size - 1) do |i|
	loser_tree[i] = value.size - 1
    end
    
    (value.size - 2).downto(0) do |i|
	adjust_loser_tree(value, loser_tree, i)
    end
end


value数组的长度比loser_tree数组长度大1。
value数组的最后一个元素应该赋屈指范围内的最小值。
分享到:
评论

相关推荐

    Ruby-Money一个Ruby库来处理货币和货币转换

    3. **货币转换**:通过与外部API(如Open Exchange Rates)集成,Money库可以实现不同货币之间的实时转换。这使得应用能够轻松地处理国际交易,适应汇率波动。 4. **货币运算**:支持基本的数学运算,如加减乘除,...

    ruby BBS

    7. 分页与排序:为了优化用户体验,论坛通常会实现分页显示帖子,并允许用户按照时间、热度等标准排序。 在开发过程中,开发者可能使用了TDD(测试驱动开发)和BDD(行为驱动开发)的方法,利用RSpec或Cucumber等...

    Ruby程序设计(简洁清新的教程)

    虽然两者都支持面向对象编程,但Ruby更加纯粹地实现了这一概念。Python在某些方面更像是面向对象和过程化编程的结合体。Ruby的语法更加灵活,提供了更多的元编程工具,这使得它在定制性和扩展性方面更为出色。 ####...

    ruby 中文教程 源代码

    - **封装**:隐藏对象内部实现细节,仅暴露必要的接口供外部调用。 - **继承**:子类可以继承父类的属性和方法,并可以对其进行扩展或覆盖。 - **多态**:同一消息发送给不同的对象会产生不同的行为。 - **类与对象*...

    DanielShiffman的“学习处理”中的示例,全部在Ruby-Processing中完成_Ruby_下载.zip

    6. **数据和算法**:使用数组、列表和其他数据结构,以及探索各种算法,如排序和搜索,来生成复杂的图形模式。 7. **物理模拟**:模拟基本的物理现象,如重力、碰撞检测和刚体动力学,为项目添加真实感。 8. **...

    Addison.Wesley.Ruby.Phrasebook.Sep.2008

    读者可以了解到如何创建、访问和操作这些集合,比如添加元素、删除元素、排序、遍历等。同时,也会涉及到一些高级用法,如利用块(block)进行迭代处理。 **4. Working with Objects** 在面向对象编程(OOP)中,对象...

    Ruby on Rails 指南 v5.0.1 中文版

    - **处理外部资源的表单**:指导如何处理来自外部资源的数据。 - **创建复杂表单**:介绍如何构建包含多个嵌套字段的复杂表单。 #### ActionController概览 - **控制器的作用**:解释控制器在MVC架构中的角色。 - ...

    WishList

    8. **Gem依赖管理**:Ruby使用Gem来管理外部库。`Gemfile`会列出项目所依赖的库,如`active_record`(数据库操作)和`sinatra`(Web开发)。 9. **配置**:应用可能有配置文件(如`config.yml`),用来存放数据库...

    java开源包3

    业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH...

    java开源包4

    业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH...

    blacklight-collections2

    4. **Gemfile**:在 "blacklight-collections2-master" 压缩包中,Gemfile 是 Ruby 项目的依赖管理文件,它列出了所有必要的外部库(称为 gems),如 Blacklight gem 和其他可能的辅助库。 5. **数据库配置**:...

    Project_Euler:http的调查及解决方案

    这些文件将展示如何利用JavaScript或Ruby来实现特定问题的解决方案。 解决欧拉问题的过程中,开发者可能会遇到的数学概念包括但不限于:数论(素数、质因数分解)、组合数学(排列组合、鸽巢原理)、几何(平面几何...

    alf-core:核心类,Alf的内核

    本文将深入探讨Alf-core,它是Alf框架的核心部分,承载着Alf的主要功能实现。 首先,我们需要了解Alf是什么。Alf,全称为"Another LINQ for Ruby",它借鉴了C#的LINQ(Language Integrated Query)概念,为Ruby提供...

    疯狂JAVA讲义

    1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6 1.3.2 Java程序的运行机制和JVM 6 1.4 开发Java的准备 7 1.4.1 安装JDK 8 学生提问:不是说JVM是...

    java开源包1

    业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH...

    java开源包11

    业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH...

    java开源包2

    业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH...

    java开源包6

    业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH...

    java开源包5

    业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH...

Global site tag (gtag.js) - Google Analytics