Objectives |
|
Sorting is a classic subject in computer science. There are three reasons for studying sorting algorithms. First, sorting algorithms illustrate many creative approaches to problem solving and these approaches can be applied to solve other problems. Second, sorting algorithms are good for practicing fundamental programming techniques using selection statements, loops , methods , and arrays. Third, sorting algorithms are excellent examples to demonstrate algorithm performance.
The data to be sorted might be integers, doubles, characters , or objects. §6.8, "Sorting Arrays," presented selection sort and insertion sort for numeric values. The selection sort algorithm was extended to sort an array of objects in §10.5.7, "Example: Sorting an Array of Objects." The Java API contains several overloaded sort methods for sorting primitive type values and objects in the java.util.Arrays and java.util.Collections class. For simplicity, this section assumes:
data to be sorted are integers,
data are sorted in ascending order, and
data are stored in an array.
The programs can be easily modified to sort other types of data, to sort in descending order, or to sort data in an ArrayList or a LinkedList .
There are many algorithms on sorting. In order to analyze and compare the complexities of these algorithms, this chapter first introduces the Big O notation for estimating algorithm efficiency. The whole chapter is optional. No chapter in the book is dependent on this chapter.