This paper addresses the problem of distributively electing a leader in both synchronous and asynchronous complete networks. In the synchronous case, we prove a lower bound of ft(n'logn) on the message complexity. We also prove that any message-optimal synchronous algorithm requires ?(log n) time. In proving these bounds we do not restrict the type of operations performed by nodes. The bounds thus apply to general algorithms and not just to comparison based algorithms. A simple algorithm which achieves these bounds is presented. In the asynchronous case, we present a sequence of three simple and efficient algorithms, each of which is an improvement on the previous. The third algorithm has time complexity O(n) and message complexity 2.n.logn+O(n), thus improving the time complexity of the previous best algorithm [Kor84] by a factor of logn.