Следуя вашему представлению, результат будет примерно таким:
A, B, C
yes / \ no is length <= 1?
/ \
remove head
/ \
A B, C
yes / \ no is length <= 1?
/ \
remove head
/ \
B C
yes / \ no is length <= 1?
/ \
B:C
/ \
B,C C,B
| |
A:B,C A:C,B
/ \ / \
A,B,C B:A,C A,C,B C:A,B
/ \ / \
B,A,C **B,C,A** C,A,B **C,B,A**
На последнем шаге вы решаете, нужен ли обмен или два на левой стороне отсортированы.Если это так, нет необходимости продолжать сортировку, так как сортировка с правой стороны выполняется, если это не так, вы сначала меняете местами самые левые элементы и сортируете два справа.
например, B: A,C --swap-> A: B, C --sort-> A, B, C или A, C, B.
Надеюсь, это поможет вам.