Matriz de índice com TimSort em C #
Pergunta
Eu estava examinando o algoritmo "timsort" para fazer alguma classificação em meus conjuntos de dados bastante grandes: http://timsort4net.codeplex.com/
Normalmente eu uso Array.Sort(Keys, Items)
, onde Items é uma matriz de inteiros que serve como um método para identificar as mudanças de posição que ocorreram durante a classificação.
Existe alguma maneira de obter esse mesmo resultado sem ter que modificar muito a implementação do algoritmo de classificação?
Solução
Você pode usar o método de extensão definido em IList
public static void TimSort<T>(this IList<T> array, Comparison<T> comparer, bool buffered = true)
para classificar a lista de índices e passar uma comparação que faz referência aos objetos reais dados os índices, os compara e retorna valores negativos, positivos ou zero.
Espero que isso ajude!