williamfiset / algorithms Java 19K 4.5K A collection of algorithms and data structures algorithms linear-algebra graph-theory search-algorithms