Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有扩展集合的堆排序_Java_Sorting - Fatal编程技术网

Java 具有扩展集合的堆排序

Java 具有扩展集合的堆排序,java,sorting,Java,Sorting,您好,我想知道您将如何使用heapsort算法,并使其能够处理整数和浮点数数组。到目前为止,我有以下代码: private static int[] a; //variable that stores the value of the array private static String[] names; //used for the names of the array private static int lengtha;// used for determing the

您好,我想知道您将如何使用heapsort算法,并使其能够处理整数和浮点数数组。到目前为止,我有以下代码:

   private static int[] a; //variable that stores the value of the array
   private static String[] names; //used for the names of the array
   private static int lengtha;// used for determing the size of the array
   private static int left;
   private static int right;
   private static int largest;


   private static void buildheap(int []a){
        lengtha=a.length-1; //gets the size of the array
        for(int i=lengtha/2;i>=0;i--){
            maxheap(a,i);
        }
    }

   private static void maxheap(int[] a, int i){ 
        left=2*i;
        right=2*i+1;
        if(left <= lengtha && a[left] > a[i]){
            largest=left;
        }
        else{
            largest=i;
        }

        if(right <= lengtha && a[right] > a[largest]){
            largest=right;
        }
        if(largest!=i){
            exchange(i,largest);
            maxheap(a, largest);
        }
    }

   private static void exchange(int i, int j){
        int t=a[i];
        String temp = names[i];

        a[i]=a[j];

        a[j]=t; 

        names[i]= names[j];
        names[j]=temp;
        }

    public Heap(int []a0, String[] arr){
        a=a0;
        names=arr;
        buildheap(a);

        for(int i=lengtha;i>0;i--){
            exchange(0, i);
            lengtha=lengtha-1;
            maxheap(a, 0);
        }
私有静态int[]a//存储数组值的变量
私有静态字符串[]名称//用于数组的名称
私有静态int lengtha;//用于确定数组的大小
私有静态int左;
私权;
私有静态int最大;
私有静态void buildheap(int[]a){
lengtha=a.length-1;//获取数组的大小
对于(int i=lengtha/2;i>=0;i--){
maxsheap(a,i);
}
}
私有静态void maxheap(int[]a,int i){
左=2*i;
右=2*i+1;
if(左a[i]){
最大=左;
}
否则{
最大=i;
}
如果(右a[最大]){
最大=右;
}
如果(最大!=i){
交易所(i,最大);
最大堆(a,最大);
}
}
专用静态无效交换(int i,int j){
int t=a[i];
字符串temp=名称[i];
a[i]=a[j];
a[j]=t;
名称[i]=名称[j];
名称[j]=临时;
}
公共堆(int[]a0,String[]arr){
a=a0;
名称=arr;
建筑群(a);
对于(int i=lengtha;i>0;i--){
交换(0,i);
lengtha=lengtha-1;
maxheap(a,0);
}

@Niks Tyagi我们应该弄清楚,等等..问题是它不起作用吗?如果是,请提供更多细节。或者如果其中有一部分您不知道如何用Java编写,请具体指出在哪里。但是如果这只是程序的一部分,您要求我们“为您完成它”,我认为你不会得到任何答案。不,我想知道如何使这段代码与浮点数一起工作,以及如何使用collections类和泛型