Geschreven door studenten die geslaagd zijn Direct beschikbaar na je betaling Online lezen of als PDF Verkeerd document? Gratis ruilen 4,6 TrustPilot
logo-home
College aantekeningen

GOAT Notes: Data Structures

Beoordeling
-
Verkocht
-
Pagina's
42
Geüpload op
07-06-2024
Geschreven in
2023/2024

Are you a second-year Computer Science student at the University of Cape Town looking for a comprehensive study aid to excel in your practicals, tests, and exams? Look no further! These meticulously crafted digital lecture notes cover data structures.

Meer zien Lees minder
Instelling
Vak

Voorbeeld van de inhoud

BEN FROST
GOAT NOTES: DATA STRUCTURES (CSC2001F)
Analysis of Algorithms:

Empirical Analysis:
Running implementations of multiple different algorithms and seeing
which one is fastest.

- Algorithms have to be implemented before any insight on their
speed can be gained.
- Should actual, random or adversarial data be used for testing?
- Scaling of testing can be impractical.
- Important to identify which parts of programs influence speed
most.

Algorithm Analysis:
Carrying out mathematical analysis on algorithms while they are
still abstract.

- Algorithms do not need to be implemented before any insight on
their speed can be gained.
- Enables performance predictions to be made before any code needs
to be implemented or run.
- Important to consider factors such as resource usage including
hardware availability and the chosen programming language.
- Abstract operations need to be identified and counted.

Asymptotic Analysis ~ Determining the bounds on resources needed as
the size of data needing to be processed increases.

Time-Complexity Analysis ~ The consideration of Best, Average &
Worst cases.

N ~ The primary parameter affecting run-time. (typically represents
input data size)

Use some basic operation to create an operation(y) = input(N) data
function: f(N)

When considering functions only consider the N term of the highest
order.

Asymptotic Analysis:
Big-O Notation is a type of asymptotic analysis in which f(N) is
bounded by a multiple of g(N), for N of the highest order.

f(N) is O(g(N)) if g(N) grows as fast or faster than f(N)


1

, BEN FROST
Formal Definition: f(N) is O(g(N)) if there exists a positive real
number M and a real number NO such that:
|f(N)| <= M x g(N) for all N>=NO
Big-O Examples:

3N2 + N -> O(N2)
N2 -> O(N2)
1000N + 500 -> O(N)
N(N + log(N)) -> O(N2)

Other Types of Asymptotic Analysis:




Order of Common Growth Functions:




Algorithm Trade-Offs:
Time-Space ~ Using additional memory to make operations faster.
~ Using slower operations to reduce memory requirements.

Time-Time ~ Insertion Time vs Search Time

Data Structures:

Intro to Data Structures:


2

, BEN FROST
A data structure is an efficient mechanism to store data and
provide access operations.
- Can be in-memory or on-disk.
- In-memory is faster.
- On-disk is larger & non-volatile.
Maps ~ An abstract data type of items with keys and values that
support two main operations; the insertion of a new item with a
specified key and the search and return of an item with a specified
key. (aka symbol table, dictionary, or associative array)

Map Operations:
-Create -Sort
-Insert -Select
-Delete -Join
-Search -isEmpty
-Traverse -Size

Map Implementations:

Array:
- Indices = Integer Keys
- Insert, Search, Remove in constant time.
- Select and Sort in Linear Time. Worst case; iterate
through whole array, N.

Singly Linked List:
- Node = Value & Key
- Search in linear time. Worst case; N. Avg. Case; N/2.
- Search + insert in linear time. Worst case; N. Avg.
Case; N.




Doubly Linked List:




Map Data Structures & Time Complexity:




3

, BEN FROST




Recursion in Data Structures:

Recursive Algorithm ~ Solves a problem by solving one or more
smaller instances of the same problem.

Recursive Method ~ A method that calls itself and has a base case
to end its recursion. Any returned value is stored in the method’s
continuous “stack”.

Any recursive method can generally be converted into an iterative
one and vice versa.

Examples:

Addition of Integers 1 to n:

public int sum(int n) {
Stack when n = 4:
// Base Case:
if (n == 0) R1: 4 + sum(3)
{ R2: 4 + 3 + sum(2)
return 0; R3: 4 + 3 + 2 + sum(1)
} R4: 4 + 3 + 2 + 1 + sum(0)
else R5: 4 + 3 + 2 + 1 + 0
{
// Recursive Call: RESULT = 10
return n + sum(n-1);
}
}




Printing out an Integer Array:

public void print(int start, int stop) {

// Base Case:
4

Geschreven voor

Instelling
Vak

Documentinformatie

Geüpload op
7 juni 2024
Aantal pagina's
42
Geschreven in
2023/2024
Type
College aantekeningen
Docent(en)
Jan buys
Bevat
Alle colleges

Onderwerpen

€2,61
Krijg toegang tot het volledige document:

Verkeerd document? Gratis ruilen Binnen 14 dagen na aankoop en voor het downloaden kan je een ander document kiezen. Je kan het bedrag gewoon opnieuw besteden.
Geschreven door studenten die geslaagd zijn
Direct beschikbaar na je betaling
Online lezen of als PDF

Maak kennis met de verkoper
Seller avatar
benfro764

Ook beschikbaar in voordeelbundel

Maak kennis met de verkoper

Seller avatar
benfro764 University of Cape Town
Volgen Je moet ingelogd zijn om studenten of vakken te kunnen volgen
Verkocht
5
Lid sinds
1 jaar
Aantal volgers
0
Documenten
3
Laatst verkocht
2 weken geleden

0,0

0 beoordelingen

5
0
4
0
3
0
2
0
1
0

Populaire documenten

Recent door jou bekeken

Waarom studenten kiezen voor Stuvia

Gemaakt door medestudenten, geverifieerd door reviews

Kwaliteit die je kunt vertrouwen: geschreven door studenten die slaagden en beoordeeld door anderen die dit document gebruikten.

Niet tevreden? Kies een ander document

Geen zorgen! Je kunt voor hetzelfde geld direct een ander document kiezen dat beter past bij wat je zoekt.

Betaal zoals je wilt, start meteen met leren

Geen abonnement, geen verplichtingen. Betaal zoals je gewend bent via Bancontact, iDeal of creditcard en download je PDF-document meteen.

Student with book image

“Gekocht, gedownload en geslaagd. Zo eenvoudig kan het zijn.”

Alisha Student

Veelgestelde vragen