//deleteArr()方法看不懂了...请大家解答;
class Test
{
public static void main(String args[])
{
int arr[] = {23,78,12,33,22,55};
int newarr[] = new int[arr.length];


for(int i=0;i<newarr.length;i++)
{
int pos = getMax(arr); newarr[i] = arr[pos];
arr = deleteArr(arr,pos);
}

for(int i=0;i<newarr.length;i++)
{
System.out.println(newarr[i]);

}


static int getMax(int arr[])
{
int pos = 0;
int temp = 0;
for(int i=0;i<arr.length;i++)
{
if(arr[i]>temp)
{
temp = arr[i];
pos = i;
}
}
return pos;
}

static int[] deleteArr(int arr[],int pos)
{
int newarr[] = new int[arr.length-1];
int newpos = 0;
for(int i=0;i<arr.length;i++)
{
if(arr[i]!=arr[pos])
{
newarr[newpos] = arr[i];
newpos++;
}
}

return newarr;
}
}

解决方案 »

  1.   

    main方法中进入循环
    1,调用getMax方法获取原始数组中最大的数字,
    2,把这个数字放到新的数组中
    3,调用deleteArr方法删除原始数组中刚才找到的最大的哪个数字
    一直执行1,2,3步,直到执行到数组的长度那么长的地方停止(这个时候没有数字了,也就是排完了)
      

  2.   

    楼上的大哥思想我明白哦,可是这一段代码我看不透,能单独解释一下if语句吗?
    for(int i=0;i<arr.length;i++)
    {
    if(arr[i]!=arr[pos])
    {
    newarr[newpos] = arr[i];
    newpos++;
    }
    }
      

  3.   

    数组中不等于arr[pos]的元素考到新数组中不过这个算法,数组元素不能重复
      

  4.   

    to:楼上
    pos是arr数组中最大元素所在的位置;
    因此if(arr[i]!=arr[pos])就是判断,arr数组中位置为i的元素,是否是最大的那个元素。
    如果不是就把这个元素加到新的数组newarr中,如果是就不用加进去了。
    因为这个最大的元素已经提取出来,放在已排序好的数组里了。而这里的newarr需要最为目标数组再重复进行排序。
      

  5.   

    sorry,刚才那帖是    to:楼主