Sorting Why Sort Put matching elements together Uniqueness

  • Slides: 10
Download presentation
Sorting

Sorting

Why Sort? • Put matching elements together – – Uniqueness testing Deleting duplicates Frequency

Why Sort? • Put matching elements together – – Uniqueness testing Deleting duplicates Frequency Counting Set operations • Prioritize Elements • Reconstruct original order • Efficient searching (binary search, pairs)

Sorting Algorithms (pp. 80 -82) • Insertion Sort – Least code, least data movement

Sorting Algorithms (pp. 80 -82) • Insertion Sort – Least code, least data movement (inversions) • Selection Sort – Conceptually simple, fewest swaps • Quick Sort – Fastest – Needs careful implementation – Partition algorithm useful on its own

Comparison Functions • Use with generalized sorting algorithms • Stable Sort – Sort criteria

Comparison Functions • Use with generalized sorting algorithms • Stable Sort – Sort criteria separately (most important last) • Unstable Sort – Previously sorted not necessarily still in order – One comparison function handles all criteria

Sorting in C++ (STL) • Library functions sort and stable_sort – Iterator bg (beginning

Sorting in C++ (STL) • Library functions sort and stable_sort – Iterator bg (beginning of list) – Iterator end (end of list) – Optional Binary. Predicate (default <=) • Function that takes two items and returns true if they are in order

Sorting in Java • In java. util. Arrays – Array of Objects (Object[] a)

Sorting in Java • In java. util. Arrays – Array of Objects (Object[] a) – Optional Comparator (default <=)

Search • Sequential Search • Binary Search – Tricky to get right under pressure

Search • Sequential Search • Binary Search – Tricky to get right under pressure • Consider stopping condition – Library functions • C++ STL: bsearch • Java: binary. Search • (see pp. 84 -85)

Generalizing Search • Sequential – Foreach element • If ( correct(element) ) process and

Generalizing Search • Sequential – Foreach element • If ( correct(element) ) process and break • Binary – While (remaining list not empty) • If (too-high (middle-of-list)) – Cut off bottom half • Else if (too-low (middle-of-list)) – Cut off top half • Else process and break

Notes on Binary Search • Generalized functions “too-high” and “too-low” might evaluate criteria other

Notes on Binary Search • Generalized functions “too-high” and “too-low” might evaluate criteria other than a value – E. g. outcome of function with a given parameter • If you can estimate a location better than the middle, use it! (phone book search)