Array | Task 4
Array | Task 4
Modify the OrderedArray so that the insert()
and delete()
routines, as well as find()
, use a binary search, as suggested in the text.
$ dart 01_array/tasks/task_4.dart
/// Modify the `ordered_array.dart` so that the insert() and delete()
/// routines, as well as find(), use a binary search, as suggested in the text.
import 'dart:io';
import '../ordered_array.dart';
class OrderedArrayTask4 extends OrderedArray {
List<int> a;
int nElems;
// Constructor
OrderedArrayTask4(int max)
: super(max);
/// Put element into ordered array using Binary Search
@override
void insert(int value) {
int lowerBound = 0;
int upperBound = nElems - 1;
int j = 0;
while(true) {
if(lowerBound > upperBound) break;
j = (lowerBound + upperBound) ~/ 2;
if(a[j] < value) {
lowerBound = j + 1;
j ++;
} else {
upperBound = j -1;
}
}
for(int k = nElems; k > j; k--) {
a[k] = a[k - 1];
}
a[j] = value;
nElems++;
}
/// Delete Element from array
@override
bool delete(int value) {
int j = find(value);
if (j == nElems) {
return false;
}
else {
for(int k = j; k > j; k++) {
a[k] = a[k + 1];
}
nElems--;
return true;
}
}
}
void main() {
int maxSize = 100;
OrderedArrayTask4 array = new OrderedArrayTask4(maxSize);
// Insert 10 items
array.insert(77);
array.insert(99);
array.insert(44);
array.insert(55);
array.insert(22);
array.insert(88);
array.insert(11);
array.insert(00);
array.insert(66);
array.insert(33);
// Display items
array.display();
}