Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,54 +0,0 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
|
||||
procedure Test_Recursive_Binary_Search is
|
||||
Not_Found : exception;
|
||||
|
||||
generic
|
||||
type Index is range <>;
|
||||
type Element is private;
|
||||
type Array_Of_Elements is array (Index range <>) of Element;
|
||||
with function "<" (L, R : Element) return Boolean is <>;
|
||||
function Search (Container : Array_Of_Elements; Value : Element) return Index;
|
||||
|
||||
function Search (Container : Array_Of_Elements; Value : Element) return Index is
|
||||
Mid : Index;
|
||||
begin
|
||||
if Container'Length > 0 then
|
||||
Mid := (Container'First + Container'Last) / 2;
|
||||
if Value < Container (Mid) then
|
||||
if Container'First /= Mid then
|
||||
return Search (Container (Container'First..Mid - 1), Value);
|
||||
end if;
|
||||
elsif Container (Mid) < Value then
|
||||
if Container'Last /= Mid then
|
||||
return Search (Container (Mid + 1..Container'Last), Value);
|
||||
end if;
|
||||
else
|
||||
return Mid;
|
||||
end if;
|
||||
end if;
|
||||
raise Not_Found;
|
||||
end Search;
|
||||
|
||||
type Integer_Array is array (Positive range <>) of Integer;
|
||||
function Find is new Search (Positive, Integer, Integer_Array);
|
||||
|
||||
procedure Test (X : Integer_Array; E : Integer) is
|
||||
begin
|
||||
New_Line;
|
||||
for I in X'Range loop
|
||||
Put (Integer'Image (X (I)));
|
||||
end loop;
|
||||
Put (" contains" & Integer'Image (E) & " at" & Integer'Image (Find (X, E)));
|
||||
exception
|
||||
when Not_Found =>
|
||||
Put (" does not contain" & Integer'Image (E));
|
||||
end Test;
|
||||
begin
|
||||
Test ((2, 4, 6, 8, 9), 2);
|
||||
Test ((2, 4, 6, 8, 9), 1);
|
||||
Test ((2, 4, 6, 8, 9), 8);
|
||||
Test ((2, 4, 6, 8, 9), 10);
|
||||
Test ((2, 4, 6, 8, 9), 9);
|
||||
Test ((2, 4, 6, 8, 9), 5);
|
||||
end Test_Recursive_Binary_Search;
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
|
||||
procedure Test_Binary_Search is
|
||||
Not_Found : exception;
|
||||
|
||||
generic
|
||||
type Index is range <>;
|
||||
type Element is private;
|
||||
type Array_Of_Elements is array (Index range <>) of Element;
|
||||
with function "<" (L, R : Element) return Boolean is <>;
|
||||
function Search (Container : Array_Of_Elements; Value : Element) return Index;
|
||||
|
||||
function Search (Container : Array_Of_Elements; Value : Element) return Index is
|
||||
Low : Index := Container'First;
|
||||
High : Index := Container'Last;
|
||||
Mid : Index;
|
||||
begin
|
||||
if Container'Length > 0 then
|
||||
loop
|
||||
Mid := (Low + High) / 2;
|
||||
if Value < Container (Mid) then
|
||||
exit when Low = Mid;
|
||||
High := Mid - 1;
|
||||
elsif Container (Mid) < Value then
|
||||
exit when High = Mid;
|
||||
Low := Mid + 1;
|
||||
else
|
||||
return Mid;
|
||||
end if;
|
||||
end loop;
|
||||
end if;
|
||||
raise Not_Found;
|
||||
end Search;
|
||||
|
||||
type Integer_Array is array (Positive range <>) of Integer;
|
||||
function Find is new Search (Positive, Integer, Integer_Array);
|
||||
|
||||
procedure Test (X : Integer_Array; E : Integer) is
|
||||
begin
|
||||
New_Line;
|
||||
for I in X'Range loop
|
||||
Put (Integer'Image (X (I)));
|
||||
end loop;
|
||||
Put (" contains" & Integer'Image (E) & " at" & Integer'Image (Find (X, E)));
|
||||
exception
|
||||
when Not_Found =>
|
||||
Put (" does not contain" & Integer'Image (E));
|
||||
end Test;
|
||||
begin
|
||||
Test ((2, 4, 6, 8, 9), 2);
|
||||
Test ((2, 4, 6, 8, 9), 1);
|
||||
Test ((2, 4, 6, 8, 9), 8);
|
||||
Test ((2, 4, 6, 8, 9), 10);
|
||||
Test ((2, 4, 6, 8, 9), 9);
|
||||
Test ((2, 4, 6, 8, 9), 5);
|
||||
end Test_Binary_Search;
|
||||
|
|
@ -1,10 +1,11 @@
|
|||
binarySearch: function [arr,val,low,high][
|
||||
if high < low -> return ø
|
||||
mid: shr low+high 1
|
||||
case [val]
|
||||
when? [< arr\[mid]] -> return binarySearch arr val low mid-1
|
||||
when? [> arr\[mid]] -> return binarySearch arr val mid+1 high
|
||||
else -> return mid
|
||||
when.has: val [
|
||||
[< arr\[mid]] -> return binarySearch arr val low mid-1
|
||||
[> arr\[mid]] -> return binarySearch arr val mid+1 high
|
||||
true -> return mid
|
||||
]
|
||||
]
|
||||
|
||||
ary: [
|
||||
|
|
@ -15,6 +16,6 @@ ary: [
|
|||
|
||||
loop [0 42 45 24324 99999] 'v [
|
||||
i: binarySearch ary v 0 (size ary)-1
|
||||
if? not? null? i -> print ["found" v "at index:" i]
|
||||
else -> print [v "not found"]
|
||||
switch not? null? i -> print ["found" v "at index:" i]
|
||||
-> print [v "not found"]
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,18 +0,0 @@
|
|||
>>SOURCE FREE
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. binary-search.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 nums-area VALUE "01040612184356".
|
||||
03 nums PIC 9(2)
|
||||
OCCURS 7 TIMES
|
||||
ASCENDING KEY nums
|
||||
INDEXED BY nums-idx.
|
||||
PROCEDURE DIVISION.
|
||||
SEARCH ALL nums
|
||||
WHEN nums (nums-idx) = 4
|
||||
DISPLAY "Found 4 at index " nums-idx
|
||||
END-SEARCH
|
||||
.
|
||||
END PROGRAM binary-search.
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
proc binsearch(A : [], value)
|
||||
{
|
||||
var low = A.domain.dim(0).low;
|
||||
var high = A.domain.dim(0).high;
|
||||
while (low <= high)
|
||||
{
|
||||
var mid = (low + high) / 2;
|
||||
|
||||
if A(mid) > value then
|
||||
high = mid - 1;
|
||||
else if A(mid) < value then
|
||||
low = mid + 1;
|
||||
else
|
||||
return mid;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
writeln(binsearch([3, 4, 6, 9, 11], 9));
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
(defun binary-search (value array)
|
||||
(let ((low 0)
|
||||
(high (1- (length array))))
|
||||
(cl-do () ((< high low) nil)
|
||||
(let ((middle (floor (+ low high) 2)))
|
||||
(cond ((> (aref array middle) value)
|
||||
(setf high (1- middle)))
|
||||
((< (aref array middle) value)
|
||||
(setf low (1+ middle)))
|
||||
(t (cl-return middle)))))))
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
function binary_search(sequence s, object val, integer low, integer high)
|
||||
integer mid, cmp
|
||||
if high < low then
|
||||
return 0 -- not found
|
||||
else
|
||||
mid = floor( (low + high) / 2 )
|
||||
cmp = compare(s[mid], val)
|
||||
if cmp > 0 then
|
||||
return binary_search(s, val, low, mid-1)
|
||||
elsif cmp < 0 then
|
||||
return binary_search(s, val, mid+1, high)
|
||||
else
|
||||
return mid
|
||||
end if
|
||||
end if
|
||||
end function
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
function binary_search(sequence s, object val)
|
||||
integer low, high, mid, cmp
|
||||
low = 1
|
||||
high = length(s)
|
||||
while low <= high do
|
||||
mid = floor( (low + high) / 2 )
|
||||
cmp = compare(s[mid], val)
|
||||
if cmp > 0 then
|
||||
high = mid - 1
|
||||
elsif cmp < 0 then
|
||||
low = mid + 1
|
||||
else
|
||||
return mid
|
||||
end if
|
||||
end while
|
||||
return 0 -- not found
|
||||
end function
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
function BinarySearch-Iterative ([int[]]$Array, [int]$Value)
|
||||
{
|
||||
[int]$low = 0
|
||||
[int]$high = $Array.Count - 1
|
||||
|
||||
while ($low -le $high)
|
||||
{
|
||||
[int]$mid = ($low + $high) / 2
|
||||
|
||||
if ($Array[$mid] -gt $Value)
|
||||
{
|
||||
$high = $mid - 1
|
||||
}
|
||||
elseif ($Array[$mid] -lt $Value)
|
||||
{
|
||||
$low = $mid + 1
|
||||
}
|
||||
else
|
||||
{
|
||||
return $mid
|
||||
}
|
||||
}
|
||||
|
||||
return -1
|
||||
}
|
||||
|
||||
function BinarySearch-Recursive ([int[]]$Array, [int]$Value, [int]$Low = 0, [int]$High = $Array.Count)
|
||||
{
|
||||
if ($High -lt $Low)
|
||||
{
|
||||
return -1
|
||||
}
|
||||
|
||||
[int]$mid = ($Low + $High) / 2
|
||||
|
||||
if ($Array[$mid] -gt $Value)
|
||||
{
|
||||
return BinarySearch $Array $Value $Low ($mid - 1)
|
||||
}
|
||||
elseif ($Array[$mid] -lt $Value)
|
||||
{
|
||||
return BinarySearch $Array $Value ($mid + 1) $High
|
||||
}
|
||||
else
|
||||
{
|
||||
return $mid
|
||||
}
|
||||
}
|
||||
|
||||
function Show-SearchResult ([int[]]$Array, [int]$Search, [ValidateSet("Iterative", "Recursive")][string]$Function)
|
||||
{
|
||||
switch ($Function)
|
||||
{
|
||||
"Iterative" {$index = BinarySearch-Iterative -Array $Array -Value $Search}
|
||||
"Recursive" {$index = BinarySearch-Recursive -Array $Array -Value $Search}
|
||||
}
|
||||
|
||||
if ($index -ge 0)
|
||||
{
|
||||
Write-Host ("Using BinarySearch-{0}: {1} is at index {2}" -f $Function, $numbers[$index], $index)
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host ("Using BinarySearch-{0}: {1} not found" -f $Function, $Search) -ForegroundColor Red
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
Show-SearchResult -Array 10, 28, 41, 46, 58, 74, 76, 86, 89, 98 -Search 41 -Function Iterative
|
||||
Show-SearchResult -Array 10, 28, 41, 46, 58, 74, 76, 86, 89, 98 -Search 99 -Function Iterative
|
||||
Show-SearchResult -Array 10, 28, 41, 46, 58, 74, 76, 86, 89, 98 -Search 86 -Function Recursive
|
||||
Show-SearchResult -Array 10, 28, 41, 46, 58, 74, 76, 86, 89, 98 -Search 11 -Function Recursive
|
||||
|
|
@ -1,17 +1,15 @@
|
|||
fn binary_search<T:PartialOrd>(v: &[T], searchvalue: T) -> Option<T> {
|
||||
fn binary_search<T:PartialOrd>(searchvalue: T, v: &[T] ) -> Option<usize> {
|
||||
let mut lower = 0 as usize;
|
||||
let mut upper = v.len() - 1;
|
||||
|
||||
while upper >= lower {
|
||||
let mid = (upper + lower) / 2;
|
||||
let mut upper = v.len();
|
||||
while upper > lower {
|
||||
let mid = lower + (upper - lower) / 2;
|
||||
if v[mid] == searchvalue {
|
||||
return Some(searchvalue);
|
||||
return Some(mid);
|
||||
} else if searchvalue < v[mid] {
|
||||
upper = mid - 1;
|
||||
upper = mid;
|
||||
} else {
|
||||
lower = mid + 1;
|
||||
}
|
||||
}
|
||||
|
||||
None
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
Function binary_search(arr,value,lo,hi)
|
||||
If hi < lo Then
|
||||
binary_search = 0
|
||||
Else
|
||||
middle=Int((hi+lo)/2)
|
||||
If value < arr(middle) Then
|
||||
binary_search = binary_search(arr,value,lo,middle-1)
|
||||
ElseIf value > arr(middle) Then
|
||||
binary_search = binary_search(arr,value,middle+1,hi)
|
||||
Else
|
||||
binary_search = middle
|
||||
Exit Function
|
||||
End If
|
||||
End If
|
||||
End Function
|
||||
|
||||
'Tesing the function.
|
||||
num_range = Array(2,3,5,6,8,10,11,15,19,20)
|
||||
n = CInt(WScript.Arguments(0))
|
||||
idx = binary_search(num_range,n,LBound(num_range),UBound(num_range))
|
||||
If idx > 0 Then
|
||||
WScript.StdOut.Write n & " found at index " & idx
|
||||
WScript.StdOut.WriteLine
|
||||
Else
|
||||
WScript.StdOut.Write n & " not found"
|
||||
WScript.StdOut.WriteLine
|
||||
End If
|
||||
Loading…
Add table
Add a link
Reference in a new issue