Network routing algorithms aim to optimize two key performance measures: throughput (quantity of service) and average packet delay (quality of service). Adaptive routing algorithms dynamically change routes based on current network conditions, while nonadaptive algorithms use static routes. Common routing algorithms include shortest path routing, distance vector routing, link state routing, and flooding. Challenges include balancing optimality, fairness, and preventing problems like congestion.