package gdsc.smlm.ga;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/*-----------------------------------------------------------------------------
* GDSC SMLM Software
*
* Copyright (C) 2015 Alex Herbert
* Genome Damage and Stability Centre
* University of Sussex, UK
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*---------------------------------------------------------------------------*/
/**
* Sorts chromosome using the fitness, highest fitness first.
*/
public class ChromosomeComparator<T extends Comparable<T>> implements Comparator<Chromosome<T>>
{
/*
* (non-Javadoc)
*
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
public int compare(Chromosome<T> chromosome1, Chromosome<T> chromosome2)
{
return chromosome1.getFitness().compareTo(chromosome2.getFitness());
}
/**
* Sort the list (highest fitness first)
*
* @param list
*/
public static <T extends Comparable<T>> void sort(List<? extends Chromosome<T>> list)
{
Collections.sort(list, new ChromosomeComparator<T>());
}
/**
* Sort the list (highest fitness first)
*
* @param list
*/
public static <T extends Comparable<T>> void sort(Chromosome<T>[] list)
{
sort(list, 0, list.length);
}
/**
* Sort the list (highest fitness first)
*
* @param list
*/
public static <T extends Comparable<T>> void sort(Chromosome<T>[] list, int fromIndex, int toIndex)
{
Arrays.sort(list, fromIndex, toIndex, new ChromosomeComparator<T>());
}
}