data structures and algorithm analysis