Adaptive Flocking Algorithm for Robot Swarms: Lessons from a School of Fish