经典指数          
原因
1121
浏览数
0
收藏数
 

假设基本数据为整型,输入为一串无序的整数,请用堆排序的方式对该整数串排序(增序),有重复时保留重复的数。  测试数据:[3,6,23,4,3,2,9,10,18,11]  (1)堆排序的思想,使用情况一般是什么? (2)算法所需要的数据结构?  (3)用你习惯的语言或者伪代码实现你的算法?

     举报   纠错  
 
切换
1 个答案
①根据初始数组去构造初始堆(构建一个完全二叉树,保证所有的父结点都比它的孩子结点数值大)。 ②每次交换第一个和最后一个元素,输出最后一个元素(最大值),然后把剩下元素重新调整为大根堆。当输出完最后一个元素后,这个数组已经是按照从小到大的顺序排列了。 (2)算法所需要的数据结构?  涉及到二叉堆的数据结构 import java.util.Arrays;   public class HeapSort {     public static void main(String[] args) {         int[] a={3,6,23,4,3,2,9,10,18,11};         int arrayLength=a.length;          //循环建堆          for(int i=0;i=0;i--){             //k保存正在判断的节点             int k=i;             //如果当前k节点的子节点存在              while(k*2+1<=lastIndex){                 //k节点的左子节点的索引                 int biggerIndex=2*k+1;                 //如果biggerIndex小于lastIndex,即biggerIndex+1代表的k节点的右子节点存在                 if(biggerIndex
 
切换
撰写答案
扫描后移动端查看本题