Java 具有扩展集合的堆排序
您好,我想知道您将如何使用heapsort算法,并使其能够处理整数和浮点数数组。到目前为止,我有以下代码: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
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类和泛型