1.大堆排
数组(c++的数组,初始索引是0的)
将[len/2]-1(其中[len/2]向下取整)的索引k对其子叶进行比较大小并进行交换(均大则取最大的子叶)
子叶的索引2*i+1和2*i+2(i为当前索引)
同理对k-1进行比较(k-1 == 0 时,比较好后就得到大堆)
将0和len交换踢出len得到最大
再次进行大堆排(因为可能不是大堆的)
再进行0和len-1交换踢出len-1得到次大
1.大堆排
数组(c++的数组,初始索引是0的)
将[len/2]-1(其中[len/2]向下取整)的索引k对其子叶进行比较大小并进行交换(均大则取最大的子叶)
子叶的索引2*i+1和2*i+2(i为当前索引)
同理对k-1进行比较(k-1 == 0 时,比较好后就得到大堆)
将0和len交换踢出len得到最大
再次进行大堆排(因为可能不是大堆的)
再进行0和len-1交换踢出len-1得到次大