pqueue 2.0.2 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 58541f0cdd4e79a637522d1d78794428c6ea6510
4
+ data.tar.gz: 7834f9997de1480be4d11bef6c9e4ad08d547644
5
+ SHA512:
6
+ metadata.gz: 85926b70318b7a6b3b0a5f5fbcad2ee4ef667435db897151618bcf645c5bb219ad6a5b1503c6a2871abed96f44e951a0a275c1575bcea4c641ee5323c0a0672d
7
+ data.tar.gz: 4dfb6c6d2e0413f6c636e6d54a4cc56216994795cd6d2fe83d07b0f01527a2ec880a82927ec44ac0bfd01babc36e41ea3a2733d8e56bfc944f9a53e4fc31eb3e
@@ -0,0 +1,63 @@
1
+ # CONTRIBUTING
2
+
3
+ ## Setup
4
+
5
+ Once you've cloned the repo, hit up Bundler.
6
+
7
+ ```
8
+ $ bundle
9
+ ```
10
+
11
+ ## Testing
12
+
13
+ We are using the Microtest framework which is a very simple test
14
+ framework built to mimic the original Test::Unit but build on
15
+ Ruby Test, the slick meta-testing framework.
16
+
17
+ Thanks to the configuration in `etc/test.rb` running test should
18
+ be as simple as:
19
+
20
+ ```
21
+ $ rubytest
22
+ ```
23
+
24
+ ## Releasing
25
+
26
+ When releasing a new version there a few things that need to done.
27
+ First, of course, make sure the version number is correct by editing
28
+ the `Index.yml` file. Then update the canonical `.index` file via:
29
+
30
+ ```
31
+ $ index -u Index.yml Gemfile
32
+ ```
33
+
34
+ Also, don't forget to add an entry to the `HISTORY.md` file for the
35
+ new release.
36
+
37
+ Though it is not likely to be needed for this project, ensure the MANIFEST
38
+ is up to date:
39
+
40
+ ```
41
+ $ mast -u
42
+ ```
43
+
44
+ Now build the gem:
45
+
46
+ ```
47
+ $ gem build .gemspec
48
+ ```
49
+
50
+ To release simply use:
51
+
52
+ ```
53
+ $ gem push pqueue-x.x.x.gem
54
+ ```
55
+
56
+ Finally, don't forget to add a tag for the release. I always use the
57
+ description of the release from the HISTORY file as the tag message
58
+ (excluding the changes list).
59
+
60
+ ```
61
+ $ gem tag -a x.x.x
62
+ ```
63
+
@@ -0,0 +1,24 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ ae (1.8.2)
5
+ ansi
6
+ ansi (1.4.3)
7
+ indexer (0.3.1)
8
+ microtest (0.2.1)
9
+ rubytest
10
+ rubytest (0.7.0)
11
+ ansi
12
+ rubytest-cli (0.1.0)
13
+ ansi
14
+ rubytest (>= 0.7.0)
15
+
16
+ PLATFORMS
17
+ ruby
18
+
19
+ DEPENDENCIES
20
+ ae
21
+ indexer
22
+ microtest
23
+ rubytest
24
+ rubytest-cli
@@ -1,6 +1,23 @@
1
- = CHANGE HISTORY
1
+ # CHANGE HISTORY
2
2
 
3
- == 2.0.2 / 2011-10-29
3
+ ## 2.1.0 / 2014-03-03
4
+
5
+ Ostatnicky has found a bug! As it turns out both `#deq` and `#shift` were
6
+ aliased incorrectly to `push`, when they should have been to `#pop`.
7
+ With this release that has been fixes, but we have modified `#shift`
8
+ to instead return the lowest priority item, which is a more polymorphic
9
+ definition with its use in Array. In addition we have added `#peek` as
10
+ an alias for `#top`, and added `bottom`, which it the opposite of `#top`.
11
+
12
+ Changes:
13
+
14
+ * Fix `#deq` as alias of `#pop`, not `#push`.
15
+ * Fix `#shift` to be like `#pop` but opposite priority.
16
+ * Add `#peek` as alias of `#top`.
17
+ * Add `#bottom` method as opposite of `#top`.
18
+
19
+
20
+ ## 2.0.2 / 2011-10-29
4
21
 
5
22
  It's been one of those days. I went to to get a wash cloth for the shower,
6
23
  on my way through the kitchen realized the chilling cookie dough needed to
@@ -13,10 +30,10 @@ me food I don't want to eat. Yea, one of those days!
13
30
 
14
31
  Changes:
15
32
 
16
- * Fixed #reheap search algorithm.
33
+ * Fixed `#reheap` search algorithm.
17
34
 
18
35
 
19
- == 2.0.1 / 2011-10-29
36
+ ## 2.0.1 / 2011-10-29
20
37
 
21
38
  Quick fix to remove old legacy library that was supposed to be
22
39
  removed in previous release. No big deal, it just confused the
@@ -27,7 +44,7 @@ Changes:
27
44
  * Remove legacy version of library.
28
45
 
29
46
 
30
- == 2.0.0 / 2011-10-29
47
+ ## 2.0.0 / 2011-10-29
31
48
 
32
49
  This is a complete rewrite to simplify the design and use more
33
50
  of Ruby's internal methods. Overall performance should be markedly
@@ -44,7 +61,7 @@ Changes:
44
61
  * Switch to BSD-2-Clause license.
45
62
 
46
63
 
47
- == 1.0.0 / 2009-07-05
64
+ ## 1.0.0 / 2009-07-05
48
65
 
49
66
  This is the initial standalone release of PQueue, spun-off from the
50
67
  Ruby Facets and originally written by K. Komada.
@@ -0,0 +1,44 @@
1
+ ---
2
+ name:
3
+ pqueue
4
+
5
+ version:
6
+ 2.1.0
7
+
8
+ title:
9
+ PQueue
10
+
11
+ summary:
12
+ Queue of Prioritized Elements
13
+
14
+ description:
15
+ A priority queue is like a standard queue, except that each inserted elements
16
+ is given a certain priority, based on the result of the comparison block given
17
+ at instantiation time. Retrieving an element from the queue will always return
18
+ the one with the highest priority.
19
+
20
+ resources:
21
+ home: http://rubyworks.github.com/pqueue
22
+ code: http://github.com/rubyworks/pqueue
23
+ bugs: http://github.com/rubyworks/pqueue/issues
24
+
25
+ repositories:
26
+ upstream: git://github.com/rubyworks/pqueue.git
27
+
28
+ authors:
29
+ - Trans <transfire@gmail.com>
30
+ - K. Kodama
31
+ - Ronald Butler
32
+ - Olivier Renaud
33
+ - Rick Bradley
34
+
35
+ organization:
36
+ Rubyworks
37
+
38
+ created:
39
+ 2001-03-10
40
+
41
+ copyrights:
42
+ - (c) 2009 Rubyworks (BSD-2)
43
+ - (c) 2001 K. Kodama
44
+
@@ -0,0 +1,23 @@
1
+ (BSD-2-Clause License)
2
+
3
+ Redistribution and use in source and binary forms, with or without
4
+ modification, are permitted provided that the following conditions are met:
5
+
6
+ 1. Redistributions of source code must retain the above copyright notice,
7
+ this list of conditions and the following disclaimer.
8
+
9
+ 2. Redistributions in binary form must reproduce the above copyright
10
+ notice, this list of conditions and the following disclaimer in the
11
+ documentation and/or other materials provided with the distribution.
12
+
13
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
14
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
15
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
16
+ COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
17
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
20
+ OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
22
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
+
@@ -0,0 +1,71 @@
1
+ # PQueue
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/pqueue.png)](http://badge.fury.io/rb/pqueue)
4
+ [![Build Status](https://secure.travis-ci.org/rubyworks/pqueue.png)](http://travis-ci.org/rubyworks/pqueue) &nbsp; &nbsp;
5
+ [![Flattr Me](http://api.flattr.com/button/flattr-badge-large.png)](http://flattr.com/thing/324911/Rubyworks-Ruby-Development-Fund)
6
+
7
+ [Website](http://rubyworks.github.com/pqueue) &middot;
8
+ [YARD API](http://rubydoc.info/gems/pqueue) &middot;
9
+ [Report Issue](http://github.com/rubyworks/pqueue/issues) &middot;
10
+ [Source Code](http://github.com/rubyworks/pqueue)
11
+
12
+
13
+ ## About
14
+
15
+ PQueue is a priority queue with array based heap.
16
+ A priority queue is like a standard queue, except that each inserted
17
+ element is given a certain priority, based on the result of the
18
+ comparison block given at instantiation time. Also, retrieving an element
19
+ from the queue will always return the one with the highest priority
20
+ (see #pop and #top).
21
+
22
+ The default is to compare the elements in respect to their #<=> method.
23
+ For example, Numeric elements with higher values will have higher
24
+ priorities.
25
+
26
+ This library is a rewrite of the original PQueue.rb by K. Kodama and
27
+ Heap.rb by Ronald Butler. The two libraries were later merged
28
+ and generally improved by Olivier Renaud. Then the whole library
29
+ rewritten by Trans using the original as a functional reference.
30
+
31
+
32
+ ## Usage
33
+
34
+ Usage is simple enough. Think of it as an array that takes a block, where
35
+ the block decides which element of the array goes first.
36
+
37
+ require 'pqueue'
38
+
39
+ pq = PQueue.new([2,3,1]){ |a,b| a > b }
40
+
41
+ pq.pop #=> 3
42
+
43
+
44
+ ## Install
45
+
46
+ Using RubyGems:
47
+
48
+ gem install pqueue
49
+
50
+
51
+ ## Acknowledgements
52
+
53
+ Although the library has been completely rewritten since, we still would
54
+ like to acknowledge the efforts of the original PQueue authors and
55
+ contributors.
56
+
57
+ * Olivier Renaud (2007)
58
+ * Rick Bradley (2003)
59
+ * Ronald Butler (2002)
60
+ * K Kodama (2001, original library)
61
+
62
+
63
+ ## License & Copyrights
64
+
65
+ Copyright (c) 2011 Rubyworks
66
+
67
+ PQueue is distributable in accordance with the *BSD-2-Clause* license.
68
+
69
+ PQueue is based on the original PQueue library (c) 2001 by K. Kodama.
70
+
71
+ See the LICENSE.txt file for details.
@@ -18,7 +18,7 @@
18
18
  class PQueue
19
19
 
20
20
  #
21
- VERSION = "2.0.0" #:erb: VERSION = "<%= version %>"
21
+ VERSION = "2.1.0" #:erb: VERSION = "<%= version %>"
22
22
 
23
23
  #
24
24
  # Returns a new priority queue.
@@ -78,17 +78,17 @@ class PQueue
78
78
  end
79
79
 
80
80
  #
81
- # Alias of #push.
81
+ # Traditional alias for #push.
82
82
  #
83
- alias :<< :push
83
+ alias enq push
84
84
 
85
85
  #
86
86
  # Alias of #push.
87
87
  #
88
- alias enq push
88
+ alias :<< :push
89
89
 
90
90
  #
91
- # Return the element with the highest priority and remove it from
91
+ # Get the element with the highest priority and remove it from
92
92
  # the queue.
93
93
  #
94
94
  # The highest priority is determined by the block given at instantiation
@@ -104,14 +104,24 @@ class PQueue
104
104
  end
105
105
 
106
106
  #
107
- # Alias of #push.
107
+ # Traditional alias for #pop.
108
108
  #
109
- alias shift push
109
+ alias deq pop
110
110
 
111
+ # Get the element with the lowest priority and remove it from
112
+ # the queue.
113
+ #
114
+ # The lowest priority is determined by the block given at instantiation
115
+ # time.
111
116
  #
112
- # Alias of #pop.
117
+ # The deletion time is O(log n), with n is the size of the queue.
118
+ #
119
+ # Return nil if the queue is empty.
113
120
  #
114
- alias deq push
121
+ def shift
122
+ return nil if empty?
123
+ @que.shift
124
+ end
115
125
 
116
126
  #
117
127
  # Returns the element with the highest priority, but
@@ -122,6 +132,20 @@ class PQueue
122
132
  return @que.last
123
133
  end
124
134
 
135
+ #
136
+ # Traditional alias for #top.
137
+ #
138
+ alias peek top
139
+
140
+ #
141
+ # Returns the element with the lowest priority, but
142
+ # does not remove it from the queue.
143
+ #
144
+ def bottom
145
+ return nil if empty?
146
+ return @que.first
147
+ end
148
+
125
149
  #
126
150
  # Add more than one element at the same time. See #push.
127
151
  #
metadata CHANGED
@@ -1,98 +1,149 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pqueue
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
5
- prerelease:
4
+ version: 2.1.0
6
5
  platform: ruby
7
6
  authors:
7
+ - Trans
8
8
  - K. Kodama
9
9
  - Ronald Butler
10
10
  - Olivier Renaud
11
11
  - Rick Bradley
12
- - Thomas Sawyer
13
12
  autorequire:
14
13
  bindir: bin
15
14
  cert_chain: []
16
- date: 2011-10-29 00:00:00.000000000 Z
15
+ date: 2015-03-03 00:00:00.000000000 Z
17
16
  dependencies:
18
17
  - !ruby/object:Gem::Dependency
19
- name: detroit
20
- requirement: &18261020 !ruby/object:Gem::Requirement
21
- none: false
18
+ name: microtest
19
+ requirement: !ruby/object:Gem::Requirement
22
20
  requirements:
23
- - - ! '>='
21
+ - - '>='
24
22
  - !ruby/object:Gem::Version
25
23
  version: '0'
26
24
  type: :development
27
25
  prerelease: false
28
- version_requirements: *18261020
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
29
31
  - !ruby/object:Gem::Dependency
30
- name: microtest
31
- requirement: &18260240 !ruby/object:Gem::Requirement
32
- none: false
32
+ name: ae
33
+ requirement: !ruby/object:Gem::Requirement
33
34
  requirements:
34
- - - ! '>='
35
+ - - '>='
35
36
  - !ruby/object:Gem::Version
36
37
  version: '0'
37
38
  type: :development
38
39
  prerelease: false
39
- version_requirements: *18260240
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
40
45
  - !ruby/object:Gem::Dependency
41
- name: ae
42
- requirement: &18259560 !ruby/object:Gem::Requirement
43
- none: false
46
+ name: rubytest
47
+ requirement: !ruby/object:Gem::Requirement
44
48
  requirements:
45
- - - ! '>='
49
+ - - '>='
46
50
  - !ruby/object:Gem::Version
47
51
  version: '0'
48
52
  type: :development
49
53
  prerelease: false
50
- version_requirements: *18259560
51
- description: ! 'A priority queue is like a standard queue, except that each inserted
52
- elements
53
-
54
- is given a certain priority, based on the result of the comparison block given
55
-
56
- at instantiation time. Retrieving an element from the queue will always return
57
-
58
- the one with the highest priority.'
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ - !ruby/object:Gem::Dependency
60
+ name: rubytest-cli
61
+ requirement: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: indexer
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ - !ruby/object:Gem::Dependency
88
+ name: mast
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ description: A priority queue is like a standard queue, except that each inserted
102
+ elements is given a certain priority, based on the result of the comparison block
103
+ given at instantiation time. Retrieving an element from the queue will always return
104
+ the one with the highest priority.
59
105
  email:
60
106
  - transfire@gmail.com
61
107
  executables: []
62
108
  extensions: []
63
109
  extra_rdoc_files:
64
- - HISTORY.rdoc
65
- - README.rdoc
66
- - COPYING.rdoc
110
+ - License.txt
111
+ - README.md
112
+ - History.md
113
+ - Contributing.md
67
114
  files:
68
- - .ruby
69
115
  - lib/pqueue.rb
70
116
  - test/test_pqueue.rb
71
- - HISTORY.rdoc
72
- - README.rdoc
73
- - COPYING.rdoc
117
+ - License.txt
118
+ - Gemfile.lock
119
+ - Index.yml
120
+ - README.md
121
+ - History.md
122
+ - Contributing.md
74
123
  homepage: http://rubyworks.github.com/pqueue
75
- licenses: []
124
+ licenses:
125
+ - BSD-2
126
+ metadata: {}
76
127
  post_install_message:
77
128
  rdoc_options: []
78
129
  require_paths:
79
130
  - lib
80
131
  required_ruby_version: !ruby/object:Gem::Requirement
81
- none: false
82
132
  requirements:
83
- - - ! '>='
133
+ - - '>='
84
134
  - !ruby/object:Gem::Version
85
135
  version: '0'
86
136
  required_rubygems_version: !ruby/object:Gem::Requirement
87
- none: false
88
137
  requirements:
89
- - - ! '>='
138
+ - - '>='
90
139
  - !ruby/object:Gem::Version
91
140
  version: '0'
92
141
  requirements: []
93
142
  rubyforge_project:
94
- rubygems_version: 1.8.10
143
+ rubygems_version: 2.0.3
95
144
  signing_key:
96
- specification_version: 3
145
+ specification_version: 4
97
146
  summary: Queue of Prioritized Elements
98
- test_files: []
147
+ test_files:
148
+ - test/test_pqueue.rb
149
+ has_rdoc:
data/.ruby DELETED
@@ -1,58 +0,0 @@
1
- ---
2
- source:
3
- - meta
4
- authors:
5
- - name: K. Kodama
6
- - name: Ronald Butler
7
- - name: Olivier Renaud
8
- - name: Rick Bradley
9
- - name: Thomas Sawyer
10
- email: transfire@gmail.com
11
- copyrights:
12
- - holder: K. Kodama
13
- year: '2001'
14
- replacements: []
15
- alternatives: []
16
- requirements:
17
- - name: detroit
18
- groups:
19
- - build
20
- development: true
21
- - name: microtest
22
- groups:
23
- - test
24
- development: true
25
- - name: ae
26
- groups:
27
- - test
28
- development: true
29
- dependencies: []
30
- conflicts: []
31
- repositories:
32
- - uri: git://github.com/rubyworks/pqueue.git
33
- scm: git
34
- name: upstream
35
- resources:
36
- home: http://rubyworks.github.com/pqueue
37
- code: http://github.com/rubyworks/pqueue
38
- mail: http://groups.google.com/group/rubyworks-mailinglist
39
- bugs: http://github.com/rubyworks/pqueue/issues
40
- extra: {}
41
- load_path:
42
- - lib
43
- revision: 0
44
- created: '2001-03-10'
45
- summary: Queue of Prioritized Elements
46
- title: PQueue
47
- version: 2.0.2
48
- name: pqueue
49
- description: ! 'A priority queue is like a standard queue, except that each inserted
50
- elements
51
-
52
- is given a certain priority, based on the result of the comparison block given
53
-
54
- at instantiation time. Retrieving an element from the queue will always return
55
-
56
- the one with the highest priority.'
57
- organization: rubyworks
58
- date: '2011-10-29'
@@ -1,31 +0,0 @@
1
- = COPYRIGHT NOTICES
2
-
3
- == PQueue
4
-
5
- Copyright:: (c) 2011 Rubyworks
6
- License:: BSD-2-Clause
7
- Website:: http://rubyworks.github.com/pqueue
8
-
9
- Copyright 2011 Rubyworks. All rights reserved.
10
-
11
- Redistribution and use in source and binary forms, with or without
12
- modification, are permitted provided that the following conditions are met:
13
-
14
- 1. Redistributions of source code must retain the above copyright notice,
15
- this list of conditions and the following disclaimer.
16
-
17
- 2. Redistributions in binary form must reproduce the above copyright
18
- notice, this list of conditions and the following disclaimer in the
19
- documentation and/or other materials provided with the distribution.
20
-
21
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
22
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
23
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
- COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
28
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30
- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
-
@@ -1,57 +0,0 @@
1
- = PQueue
2
-
3
- {Home}[http://rubyworks.github.com/pqueue] |
4
- {Code}[http://github.com/rubyworks/pqueue] |
5
- {Docs}[http://rubydoc.info/gems/pqueue/frames] |
6
- {Mail}[http://groups.google.com/group/rubyworks] | #rubyworks
7
-
8
- {<img src="http://travis-ci.org/rubyworks/pqueue.png" />}[http://travis-ci.org/rubyworks/pqueue]
9
-
10
- == DESCRIPTION
11
-
12
- Priority queue with array based heap.
13
-
14
- A priority queue is like a standard queue, except that each inserted
15
- elements is given a certain priority, based on the result of the
16
- comparison block given at instantiation time. Also, retrieving an element
17
- from the queue will always return the one with the highest priority
18
- (see #pop and #top).
19
-
20
- The default is to compare the elements in respect to their #<=> method.
21
- For example, Numeric elements with higher values will have higher
22
- priorities.
23
-
24
- This library is a rewrite of the original PQueue.rb by K. Kodama and
25
- Heap.rb by Ronald Butler. The two libraries were later merged
26
- and generally improved by Olivier Renaud. Then the whole library
27
- rewritten by Trans using the original as a functional reference.
28
-
29
-
30
- == SYNOPSIS
31
-
32
- require 'pqueue'
33
-
34
- pq = PQueue.new([2,3,1]){ |a,b| a > b }
35
-
36
- pq.pop #=> 3
37
-
38
-
39
- == ACKNOWLEDGMENTS
40
-
41
- Although the library has been completely rewritten since, we still would
42
- like to acknowledge the efforts of the original PQueue authors and
43
- contributors.
44
-
45
- * Olivier Renaud (2007)
46
- * Rick Bradley (2003)
47
- * Ronald Butler (2002)
48
- * K Kodama (2001, original library)
49
-
50
-
51
- == COPYRIGHTS
52
-
53
- Copyright (c) 2011 Rubyworks
54
-
55
- PQueue is distributable in accordance with the *FreeBSD* license.
56
-
57
- See the COPYING.rdoc file for details.