From 29b3bc85531c94630788a8a137e096c0ce0d4111 Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Tue, 9 Nov 2021 19:08:49 +0300 Subject: [PATCH] example 5 --- src/example_5/.gitignore | 15 +++++++++++++ src/example_5/dub.json | 9 ++++++++ src/example_5/source/app.d | 43 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 src/example_5/.gitignore create mode 100644 src/example_5/dub.json create mode 100644 src/example_5/source/app.d diff --git a/src/example_5/.gitignore b/src/example_5/.gitignore new file mode 100644 index 0000000..ebb1f38 --- /dev/null +++ b/src/example_5/.gitignore @@ -0,0 +1,15 @@ +.dub +docs.json +__dummy.html +docs/ +/example_5 +example_5.so +example_5.dylib +example_5.dll +example_5.a +example_5.lib +example_5-test-* +*.exe +*.o +*.obj +*.lst diff --git a/src/example_5/dub.json b/src/example_5/dub.json new file mode 100644 index 0000000..e2457e5 --- /dev/null +++ b/src/example_5/dub.json @@ -0,0 +1,9 @@ +{ + "authors": [ + "alexander" + ], + "description": "Массивы и ассоциативные массивы. Бинарный поиск.", + "license": "proprietary", + "name": "example_5", + "targetPath": "bin" +} diff --git a/src/example_5/source/app.d b/src/example_5/source/app.d new file mode 100644 index 0000000..a3befe7 --- /dev/null +++ b/src/example_5/source/app.d @@ -0,0 +1,43 @@ +import std.array, std.stdio; + +bool binarySearch(T)(T[] input, T value) +{ + while (!input.empty) + { + auto i = input.length / 2; + auto mid = input[i]; + if (mid > value) input = input[0..i]; + else if (mid < value) input = input[i+1..$]; + else return true; + } + + return false; +} + +bool binarySearchRecursive(T)(T[] input, T value) +{ + if (input.empty) return false; + auto i = input.length / 2; + auto mid = input[i]; + if (mid > value) return binarySearchRecursive(input[0..i], value); + if (mid < value) return binarySearchRecursive(input[i+1..$], value); + return true; +} + +unittest +{ + assert(binarySearch([1, 5, 6, 9], 6)); + assert(!binarySearch([1, 5, 6, 9], 3)); + assert(binarySearch([5.3, 6.1, 6.2, 9.4], 6.2)); + assert(!binarySearch([5.3, 6.1, 6.2, 9.4], 6.3)); + + assert(binarySearchRecursive([1, 5, 6, 9], 6)); + assert(!binarySearchRecursive([1, 5, 6, 9], 3)); + assert(binarySearchRecursive([5.3, 6.1, 6.2, 9.4], 6.2)); + assert(!binarySearchRecursive([5.3, 6.1, 6.2, 9.4], 6.3)); +} + +void main() +{ + +}