Data structure and algorithm

18
What is Program A Set of Instructions Data Structures + Algorithms Data Structure = A Container stores Data Algorithm = Logic + Control Trupti Agrawal 1

Transcript of Data structure and algorithm

Page 1: Data structure and algorithm

Trupti Agrawal 1

What is ProgramA Set of InstructionsData Structures + AlgorithmsData Structure = A Container stores DataAlgorithm = Logic + Control

Page 2: Data structure and algorithm

DATA STRUCTURE A data structure is a particular way of organizing data in a computer so that it can be used

efficiently.

Different kinds of data structures are suited to different kinds of applications, and some are highly specialized to specific tasks. For example, B-trees are particularly well-suited for implementation of databases, while compiler implementations usually use hash table to look up identifiers.

Data structures provide a means to manage large amounts of data efficiently, such as large databases and internet indexing services.

Usually, efficient data structures are a key in designing efficient algorithms.

Some formal design methods and programming languages emphasize data structures, rather than algorithms, as the key organizing factor in software design. Storing and retrieving can be carried out on data stored in both main memory and in secondary memory.

Page 3: Data structure and algorithm

Common Data StructuresArrayStackQueueLinked ListTreeHeapHash TablePriority Queue

Page 4: Data structure and algorithm

Introduction to AlgorithmAn algorithm is a finite set of instructions that accomplishes

a particular task.Criteria

input: zero or more quantities that are externally supplied output: at least one quantity is produced definiteness: clear and unambiguous finiteness: terminate after a finite number of steps effectiveness: instruction is basic enough to be carried out

A program does not have to satisfy the finiteness criteria

Page 5: Data structure and algorithm

[Cont…]Representation

A natural language, like English or Chinese.A graphic, like flowcharts. A computer language, like C.

Algorithms + Data structures = Programs [Niklus Wirth]

Page 6: Data structure and algorithm

Designing an AlgorithmRequirementsAnalysis: bottom-up vs. top-downDesign: data objects and operationsRefinement and CodingVerification

Program Proving Testing Debugging

Page 7: Data structure and algorithm

Approaches for Designing an Algorithm

Page 8: Data structure and algorithm

Analysis of algorithmsIn computer science, the analysis of algorithms is the determination of the

number of resources (such as time and storage) necessary to execute them.

Most algorithms are designed to work with inputs of arbitrary length. Usually the efficiency or running time of an algorithm is stated as a function relating the input length to the number of steps (time complexity) or storage locations (space complexity).

Algorithm analysis is an important part of a broader computational complexity theory, which provides theoretical estimates for the resources needed by any algorithm which solves a given computational problem. These estimates provide an insight into reasonable directions of search for efficient algorithms.

Page 9: Data structure and algorithm

Time complexityIn computer science, the time complexity of

an algorithm quantifies the amount of time taken by an algorithm to run as a function of the length of the string representing the input. The time complexity of an algorithm is commonly expressed using big O notation, which excludes coefficients and lower order terms. When expressed this way, the time complexity is said to be described asymptotically, i.e., as the input size goes to infinity. For example, if the time required by an algorithm on all inputs of size n is at most 5n3 + 3n, the asymptotic time complexity is O(n3).

Page 10: Data structure and algorithm

[Cont…]Since an algorithm's performance time may vary with

different inputs of the same size, one commonly uses the worst-case time complexity of an algorithm, denoted as T(n), which is defined as the maximum amount of time taken on any input of size n. Time complexities are classified by the nature of the function T(n). For instance, an algorithm with T(n) = O(n) is called a linear time algorithm, and an algorithm with T(n) = O(2n) is said to be an exponential time algorithm.

Page 11: Data structure and algorithm

Space complexityIt represents the total amount of memory space that a

"normal" physical computer would need to solve a given computational problem with a given algorithm. It is one of the most well-studied complexity measures, because it corresponds so closely to an important real-world resource: the amount of physical computer memory needed to run a given program.

Page 12: Data structure and algorithm

Algorithm StrategiesGreedyDivide and ConquerDynamic Programming

Page 13: Data structure and algorithm

Which Data Structure or Algorithm is better?Must Meet RequirementHigh PerformanceLow RAM footprintEasy to implement

Encapsulated

Page 14: Data structure and algorithm

Pointer VariableA pointer variable is a variable that contains the memory

location of another variable or an array (or anything else in memory).

Effectively, it points to another memory location.

For standard variables, you define a type, assign a value to that variable or read the value from it, and you can also read the memory location (&n = memory location of n) of the variable.

For pointers, you can point them to any variable, even another pointer, and you can get the value of the variable it points to (*p), the location of that variable in memory (p), or the address in memory of the pointer itself (&p). 

Page 15: Data structure and algorithm

Pointer Variable[Cont…]Pointers are declared with the use of the asterisk ( *). In

the example

int *foo;

float *bar;

Here, foo is declared as a pointer to an integer, and bar is declared as a pointer to a floating point number.

Page 16: Data structure and algorithm

Pointer Variable[Cont…]To make a pointer variable point at some other variable,

the ampersand operator is used. The ampersand operator returns the address of a variable's value; that is, the place in memory where the variable's value is stored. Thus:

int *foo;

int x= 5;

foo= &x;

It makes the pointer foo ``point at'' the value of x (which happens to be 5).

Page 17: Data structure and algorithm

Pointer Variable[Cont…]This pointer can now be used to retrieve the value of x using

the asterisk operator. This process is called de-referencing. The pointer, or reference to a value, is used to fetch the value being pointed at. Thus:

int y;

y= *foo;

It sets y equal to the value pointed at by foo. In the previous example, foo was set to point at x, which had the value 5. Thus, the result of dereferencing foo yields 5, and y will be set to 5.

Page 18: Data structure and algorithm

THANK YOU….. !!!