Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- object BinarySearch {
- def main(): Unit = {
- println(new BS().Start(20));
- }
- }
- // This class contains an array of integers and
- // methods to initialize, print and search the array
- // using Binary Search
- class BS {
- var number : Int[];
- var size : Int;
- // Invoke methods to initialize, print and search
- // for elements on the array
- def Start(sz : Int) : Int = {
- var aux01 : Int;
- var aux02 : Int;
- aux01 = this.Init(sz);
- aux02 = this.Print();
- if (this.Search(8))
- println(1);
- else
- println(0);
- if (this.Search(19))
- println(1);
- else
- println(0);
- if (this.Search(20))
- println(1);
- else
- println(0);
- if (this.Search(21))
- println(1);
- else
- println(0);
- if (this.Search(37))
- println(1);
- else
- println(0);
- if (this.Search(38))
- println(1);
- else
- println(0);
- if (this.Search(39))
- println(1);
- else
- println(0);
- if (this.Search(50))
- println(1);
- else
- println(0);
- return 999;
- }
- // Search for a specific value (num) using
- // binary search
- def Search(num : Int) : Bool = {
- var bs01 : Bool;
- var right : Int;
- var left : Int;
- var var_cont : Bool;
- var medium : Int;
- var aux01 : Int;
- var nt : Int;
- aux01 = 0;
- bs01 = false;
- right = number.length;
- right = right - 1;
- left = 0;
- var_cont = true;
- while (var_cont) {
- medium = left + right;
- medium = medium / 2;
- aux01 = number[medium];
- if (num < aux01)
- right = medium - 1;
- else
- left = medium + 1;
- if (aux01 == num)
- var_cont = false;
- else
- var_cont = true;
- if (right < left)
- var_cont = false;
- else
- nt = 0;
- }
- if (aux01 == num)
- bs01 = true;
- else
- bs01 = false;
- return bs01;
- }
- // Print the integer array
- def Print() : Int = {
- var j : Int;
- j = 1 ;
- while (j < (size)) {
- println(number[j]);
- j = j + 1;
- }
- println(99999);
- return 0 ;
- }
- // Initialize the integer array
- def Init(sz : Int) : Int = {
- var j : Int;
- var k : Int;
- var aux01 : Int;
- var aux02 : Int;
- size = sz;
- number = new Int[sz] ;
- j = 1 ;
- k = size + 1 ;
- while (j < (size)) {
- aux01 = 2 * j ;
- aux02 = k - 3 ;
- number[j] = aux01 + aux02 ;
- j = j + 1 ;
- k = k - 1 ;
- }
- return 0 ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement