Analysis of Self-Adjusting Heaps