search in a rotated sorted array
rotate an array by a given amount of shift in linear time and constant space
generate a uniform random permutation or shuffle an array uniformly randomnly using Knuth's shuffle algorithm