I always got confused as to what’s the end result my sort. I wasn’t sure if it would end up being ascending or descending. The ultimate trick is to not think of up vs down. Instead think of increasing/decreasing from left to right.
We perceive arrays as horizontal beings. Hence left and right make more sense vs up and down

``````let nums = [1,4,2,3]
let sorted_nums = arr.sorted(by: {
\$0 < \$1 // left is smaller  [1,2,3,4] i.e. ascending
})
``````

If you see `\$0 < \$1` then left side is smaller than the next item. i.e. it’s ascending.

``````let nums = [1,4,2,3]
let sorted_nums = arr.sorted(by: {
\$0 > \$1  // left is bigger [4,3,2,1] i.e. descending
})
``````

If you see `\$0 > \$1` then right side is smaller than the next item. i.e. it’s descending. Similarly writing `array.sorted(by: <)` is identical.

#### Alternate way:#

• `array.sorted(by: <)` will make it decreasing.
• `array.sorted(by: >)` will make it increasing.

#### And if I don’t pass a block?#

It will make the array increasing. Increasing is more natural as that’s how we’d list numbers from 1…n and we almost never list numbers n…1.

``````let nums = [1,4,2,3]
print(nums.sorted()) // [1,2,3,4]
``````

### \$0 vs \$1#

Never place the `\$1` on the left side when sorting. `\$0` is the first number, `\$1` is the second number in the comparison. If you switch them then the order will get reversed.