L17-18 - Array Subtask
L17-18 - Array Subtask
1
Programming with Arrays
Subtasks
Partially-filled arrays
Loading
Searching
Sorting
Sum, average
Extremes
2
Partially-filled Arrays (Common Case)
Must be declared some maximum size
Program must maintain
How many elements are being used
and/or
Highest subscript
3
Sizeof and Arrays
Operator sizeof returns the total bytes in the
argument
Total elements = sizeof(array) / sizeof(data-
type)
Exampl
e
4
Loading an Array
Be careful not to overfill
5
Loading a Two-dimensional Array
6
Safer 2D Load
7
Searching an Array
Linear search
Simple
Binary search
Requires sorted array
74? Generally faster for
large arrays
May require the use of
an indicator to denote
found or not found
8
Linear Search Example Using While
9
Linear Search Example Using For
10
Sorting
Place array into some
order
Ascending or
descending
Many types
Simple: Brute force
More intelligent: Bubble,
selection, insertion, shell,
comb, merge, heap, quick,
counting, bucket, radix,
distribution, timsort,
gnome, cocktail, library,
cycle, binary tree, bogo,
pigeonhole, spread, bead,
pancake, …
11
Brute Force Sort
Compare element to all elements below and then
move to next element, swap when appropriate
12
Brute Force Example
13
Bubble/Sinking Sort
Compare adjacent elements, swap when appropriate
Stop if no swaps on a pass
14
Bubble Sort Example
15
Sum & Average Example
Verify positive count before computing average
Protects against division by zero
16
Extremes
Same techniques as chapter 5 – best:
Assume first is extreme
Compare others to current extreme
Replace extreme when finding new extreme
17
Extremes: Find Maximum
Example
18
Programming in C
T H EE N
D
19