La prima fase dell'algoritmo è la suddivisione della lista in catene (*). Qui si iniziano a leggere in maniera sequenziale gli elementi della lista andando a creare nuove catene, ogni catena finisce quando si incontra un elemento che è più grande del successivo o è più piccolo del precedente; Quindi sostanzialmente avremo o catene di singoli elementi, o delle catene di elementi ordinati di grandezza variabile.
Nel secondo passo dell'algoritmo le catene vengono distribuite in maniera alternata su due liste ausiliare (A e B). In questo secondo passo dagli esempi dele slide si nota come:
Non si tiene conto dell'ordine delle catene su due liste ausiliare ma se due catene adiacenti risultano avere elementi disposti in maniera ordinata allora vengono direttamnete fuse tra loro;
Infine si passa al terzo passo in cui si fondono le catene. Ma in questo passo come si procede? si cerca di predisporre le catene nella maniera più ordinata, ma se ho la catena X = <5,44,65> e la catena Y = <3,4,83> quale catena verrà messa per prima?
Il terzo passo riguardante la fusione non mi è ben chiaro come avviene, se due catene adiacenti vengono fuse e riordinate tra loro prima di essere inserite nella lista principale, ed in questo caso che algoritmo viene utilizzato per riordinarle, o se vengono semplicemente disposte in maniera il più ordinate possibile nella lista principale, ma nel caso delle due catene di sopra quale viene messa per prima? quella che ha il primo elemento più piccolo o quella che ha l'ultimo elemento più piccolo?
(*) Una catena non è altro che una sottolista;