J.E.D.I
medium – bits, bytes, words, etc – consists of serially arranged bits that are addressable as a unit. The processing units allow us to perform basic operations that include
arithmetic, comparison and so on.
Solution domain, on the other hand, links the problem and machine domains. It is at the solution domain where structuring of higher level data structures and synthesis of
algorithms are of concern.
1.4 Data Type, Abstract Data Type and Data Structure
Data type refers to the to the kind of data that variables can assume, hold or take on in a programming language and for which operations are automatically provided. In Java,
the primitive data types are:
Keyword Description
byte Byte-length integer
short Short integer
int Integer
long Long integer
float Single-precision floating point
double Double-precision floating point
char A single character
boolean A boolean value true or false
Abstract Data Type ADT, on the other hand, is a mathematical model with a collection of operations defined on the model. It specifies the type of data stored. It
specifies what its operations do but not how it is done. In Java, ADT can be expressed with an interface, which contains just a list methods. For example, the following is an
interface of the ADT stack, which we will cover in detail in Chapter 2:
public interface Stack{ public int size; returns the size of the stack
public boolean isEmpty; checks if empty public Object top throws StackException;
public Object pop throws StackException; public void pushObject item throws StackException;
}
Data structure is the implementation of ADT in terms of the data types or other data structures. A data structure is modeled in Java by a class. Classes specify how
operations are performed. In Java, to implement an ADT as a data structure, an interface is implemented by a class.
Abstraction and representation help us understand the principles behind large software systems. Information-hiding can be used along with abstraction to partition a large
system into smaller subsystems with simple interfaces that makes them easier to
Data Structures 10
J.E.D.I
understand and use.
1.5 Algorithm
Algorithm is a finite set of instructions which, if followed, will accomplish a task. It has five important properties: finiteness, definiteness, input, output and effectiveness.
Finiteness means an algorithm must terminate after a finite number of steps. Definiteness is ensured if every step of an algorithm is precisely defined. For example,
divide by a number x is not sufficient. The number x must be define precisely, say a positive integer. Input is the domain of the algorithm which could be zero or more
quantities. Output is the set of one or more resulting quantities which is also called the range of the algorithm. Effectiveness is ensured if all the operations in the algorithm are
sufficiently basic that they can, in principle, be done exactly and in finite time by a person using paper and pen.
Consider the following example: public class Minimum {
public static void mainString[] args { int a[] = { 23, 45, 71, 12, 87, 66, 20, 33, 15, 69 };
int min = a[0]; for int i = 1; i a.length; i++ {
if a[i] min min = a[i]; }
System.out.printlnThe minimum value is: + min; }
} The Java code above returns the minimum value from an array of integers. There is no
user input since the data from where to get the minimum is already in the program. That is, for the input and output properties. Each step in the program is precisely defined.
Hence, it is definite. The declaration, the for loop and the statement to output will all take a finite time to execute. Thus, the finiteness property is satisfied. And when run, it
returns the minimum among the values in the array so it is said to be effective.
All the properties of an algorithm must be ensured in writing an algorithm.
1.6 Addressing Methods