public class HighArray {
private long[] a;
private int nElems;

public HighArray(int max){
a = new long[max];
nElems = 0;
}

public boolean find(long searchKey){
int j;
for(j=0;j<nElems;j++){
if(a[j] == searchKey)
break;
}
if(j==nElems)
return true;
else
return false;
}
public void insert(long value){
a[nElems] = value;
nElems++;
// System.out.print(nElems);
}
public boolean delete(long value){
int j;
for(j=0;j<nElems;j++)
if(value == a[j]) break;
if(j == nElems)
return false;
else{
for(int k=j;k<nElems;k++)
a[k] = a[k+1];
nElems--;
return true;


}

public long[] sort(){
for(int j = 0; j<nElems; j++){
System.out.println("=====1=======>"+a[j]);
}
java.util.Arrays.sort(a);
for(int j = 0; j<nElems; j++){
System.out.println("=======2=====>"+a[j]);
}
return a;
}

public void display(){
for(int j = 0; j<nElems; j++){
System.out.println(a[j]);
}
}
public int getMax(long searchKey){ //二分法查找最大值
java.util.Arrays.sort(a);
int lowerBound = 0;
int upperBound = nElems-1;
int currentIn;

while(true){
currentIn = (lowerBound+upperBound)/2;
if(a[currentIn] == searchKey)
return currentIn;
else if(lowerBound>upperBound) 
return nElems;
else {
if(a[currentIn]<searchKey)
lowerBound = currentIn+1;
else
upperBound = currentIn-1;
}

}
}
 
}class HighArrayApp{
public static void main(String[] args){
int maxSize = 100;
HighArray arr= new HighArray(maxSize) ;
arr.insert(120);
arr.insert(30);
arr.insert(140);
arr.insert(60);
arr.insert(150);
arr.insert(90);
arr.insert(80);
arr.insert(10);
arr.insert(70);
arr.insert(100);
arr.insert(110);
arr.insert(1120);



// System.out.println(arr.getMax(90));
arr.sort();
// arr.display();
}
}=====1=======>120
=====1=======>30
=====1=======>140
=====1=======>60
=====1=======>150
=====1=======>90
=====1=======>80
=====1=======>10
=====1=======>70
=====1=======>100
=====1=======>110
=====1=======>1120
=======2=====>0
=======2=====>0
=======2=====>0
=======2=====>0
=======2=====>0
=======2=====>0
=======2=====>0
=======2=====>0
=======2=====>0
=======2=====>0
=======2=====>0
=======2=====>0

解决方案 »

  1.   


    public long[] sort() {
    for (int j = 0; j < nElems; j++) {
    System.out.println("=====1=======>" + a[j]);
    }
    java.util.Arrays.sort(a);
    for (int j = a.length - 1, i = 0;i < nElems;i++,j--) {
    System.out.println("=======2=====>" + a[j]);
    }
    return a;
    }
      

  2.   

    问题就在这里int maxSize = 100;
    HighArray arr= new HighArray(maxSize) ;for(int j = 0; j<nElems; j++){
    System.out.println("=======2=====>"+a[j]);
    }你的数组有100位,而你只循环了6位,排序后当然0在前面
      

  3.   

    你插入的数都比0大,你试试下面这个就能看到你的结果了java.util.Arrays.sort(a,0,nElems);