If I have a large random array of 0s and 1s that I want to sort what kind of an algorithm and data structures should I consider?
Use counting sort: run through the array once and count the number of 0's. Then run through the array once more and write in it the counted number of 0's, followed by 1's. In any case, this is a purely academic exercise because nobody would ever need to do such a thing in real life.