数组排序算法,看不懂了,求大家解答.
//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;
}
}
------解决方案--------------------main方法中进入循环
1,调用getMax方法获取原始数组中最大的数字,
2,把这个数字放到新的数组中
3,调用deleteArr方法删除原始数组中刚才找到的最大的哪个数字
一直执行1,2,3步,直到执行到数组的长度那么长的地方停止(这个时候没有数字了,也就是排完了)
------解决方案--------------------to:楼上
pos是arr数组中最大元素所在的位置;
因此if(arr[i]!=arr[pos])就是判断,arr数组中位置为i的元素,是否是最大的那个元素。
如果不是就把这个元素加到新的数组newarr中,如果是就不用加进去了。
因为这个最大的元素已经提取出来,放在已排序好的数组里了。而这里的newarr需要最为目标数组再重复进行排序。