def sink(heap,k,heapsize): while 2*k+1<=heapsize: j = 2*k+1 if j<=heapsize and heap[j]<heap[j+1]: j++ if heap[k]>=heap[j]: break heap[k],heap[j]=heap[j],heap[k] k=j def heapsort(heap): N = len(heap) for i in xrange(N/2-1,-1,-1): sink(heap,i,N) while N>1: heap[0],heap[N--]=heap[n],heap[0] sink(heap,0,N) M = heap[M] return M 菜鸟一只,用的堆排序的方法,时间复杂度是O(nlogn),建立堆的过程的时间复杂度是O(n),而对于更改堆重建过程中,对于每个元素都要下沉, 下沉logn次,而一共有n个元素,所以此时的时间复杂度为O(nlogn)