Logic of Top-Down Sort:

15 These are the numbers I want to sort.

36

24

12

20

Pass 1:

 Before Processing After Set up: Establish 2 subscripts: SUB1=1 and SUB2 = 2 15 36 24 12 20 Compare: 15 - what SUB1 is pointing to 36 - what SUB2 is pointing to 15 < 36 so leave alone 15 36 24 12 20 15 36 24 12 20 Add 1 to SUB2 so, SUB2 = 3 Compare: 15 - what SUB1 is pointing to 24 - what SUB2 is pointing to 15 < 24 so leave alone 15 36 24 12 20 15 36 24 12 20 Add 1 to SUB2 so, SUB2 = 4 Compare: 15 - what SUB1 is pointing to 12 - what SUB2 is pointing to 15 not < 12, so flip meaning move what SUB1 is pointing to, to the spot where SUB2 is pointing and what SUB2 was pointing to, to the spot where SUB1 was pointing 12 36 24 15 20 12 36 24 15 20 Add 1 to SUB2 so, SUB2 = 5 Compare: 12 - what SUB1 is pointing to 20 - what SUB2 is pointing to 12 < 20 so leave alone 12 36 24 15 20 The next add to SUB2 puts it out of the range of the table (5 elements in the table), so Pass 1 is over. Pass 1 ends with the smallest number in the table at the top - in element 1. 12 36 24 15 20

Pass 2:

 Before Processing After 12 36 24 15 20 Start of Pass: 12 is locked in place Reset subscripts: SUB1 = 2 (add 1 to SUB1) and SUB2 = 3 (one more than SUB1) 12 36 24 15 20 Compare: 36 - what SUB1 is pointing to 24 - what SUB2 is pointing to 36 not < 24 so flip 12 24 36 15 20 12 24 36 15 20 Add 1 to SUB2 so, SUB2 = 4 Compare: 24 - what SUB1 is pointing to 14 - what SUB2 is pointing to 24 not < 15 so flip 12 15 36 24 20 12 15 36 24 20 Add 1 to SUB2 so, SUB2 = 5 Compare: 15 - what SUB1 is pointing to 20 - what SUB2 is pointing to 15 < 20 so leave alone 12 15 36 24 20 The next add to SUB2 puts it out of the range of the table (5 elements in the table), so Pass 2 is over. Pass 2 ends with the smallest two number in the table at the top - in element 1 and element 2. 12 15 36 24 20

Pass 3:

 Before Process After 12 15 36 24 20 Start of Pass: 12 and 15 are locked in place Reset subscripts: SUB1 = 3 (add 1 to SUB1) and SUB2 = 4 (one more than SUB1) 12 15 36 24 20 Compare: 36 - what SUB1 is pointing to 24 - what SUB2 is pointing to 36 not < 24 so flip 12 15 24 36 20 12 15 24 36 20 Add 1 to SUB2 so, SUB2 = 5 Compare: 24 - what SUB1 is pointing to 20 - what SUB2 is pointing to 24 not < 20 so flip 12 15 20 36 24 The next add to SUB2 puts it out of the range of the table (5 elements in the table), so Pass 3 is over. Pass 3 ends with the smallest three number in the table at the top - in element 1 and element 2 and element 3. 12 15 20 36 24

Pass 4:

 Before Processing After 12 15 20 36 24 Start of Pass: 12 and 15 and 20 are locked in place Reset subscripts: SUB1 = 4 (add 1 to SUB1) and SUB2 = 5 (one more than SUB1) 12 15 20 36 24 Compare: 36 - what SUB1 is pointing to 24 - what SUB2 is pointing to 36 not < 24 so flip 12 15 20 24 36 The next add to SUB2 puts it out of the range of the table (5 elements in the table), so Pass 4 is over and since adding 1 to SUB1 would have it point at the last element in the table, the sort is over. Note: Since this example sorted 5 numbers, 4 passes were needed (one less than the number of numbers being sorted). 12 15 20 24 36