source: project/release/4/binary-search/binary-search.wiki @ 31138

Last change on this file since 31138 was 31138, checked in by felix winkelmann, 6 years ago

added preliminary eggs for extraction from core libraries

File size: 2.4 KB
Line 
1[[tags: egg]]
2[[toc:]]
3
4== binary-search
5
6A straightforward implementation of [[http://en.wikipedia.org/wiki/Binary_search|binary search]].
7
8
9=== Usage
10
11<procedure>(binary-search SEQUENCE PROC)</procedure>
12
13Performs a binary search in {{SEQUENCE}}, which should be a sorted
14list or vector.  {{PROC}} is called to compare items in the sequence,
15should accept a single argument and return an exact integer: zero if the
16searched value is equal to the current item, negative if the searched
17value is ''less'' than the current item, and positive otherwise.
18Returns the index of the found value or {{#f}} otherwise.
19
20{{SEQUENCE}} may also be an exact integer - in this case the search is
21performed on an /abstract/ sequence and {{PROC}} is called with the
22current index into the abstract sequence. This may be useful if you
23just want to iterate over the {{O(log n)}} steps needed to locate a
24value in some particular range.
25
26
27=== Author
28
29The CHICKEN Team
30
31
32=== License
33
34 Copyright (c) 2014, The CHICKEN Team
35 All rights reserved.
36 
37 Redistribution and use in source and binary forms, with or without
38 modification, are permitted provided that the following conditions
39 are met:
40 1. Redistributions of source code must retain the above copyright
41    notice, this list of conditions and the following disclaimer.
42 2. Redistributions in binary form must reproduce the above copyright
43    notice, this list of conditions and the following disclaimer in the
44    documentation and/or other materials provided with the distribution.
45 3. The name of the authors may not be used to endorse or promote products
46    derived from this software without specific prior written permission.
47 
48 THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
49 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
50 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
51 IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
52 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
53 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
54 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
55 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
56 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
57 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
58 
59
60=== Version History
61
62; 1.0 : Extracted from {{data-structures}} core library unit and released as an egg.
Note: See TracBrowser for help on using the repository browser.