java,将数组中较大数放到第一个元素。谢谢咯

//定义数组存储10个数据,将数组中最大数放到第一个元素。
class Exercise09
{
public static void main(String[] args)
{
int[] arr={1,2,3,4,5,10,6,7,8,9};//定义数组。
PutZero pz=new PutZero();//new对象。
pz.put(arr);
}
}
class PutZero
{
int max=0;
int temp;
void put(int[] a)//定义方法将数组中大数和0坐标将换。
{
for (int i=0;i<a.length ;i++ )
{
if (a[i]>a[max])
{
int temp=i;
}
System.out.print(a[i]+" ");
}
for (int i=0;i<a.length ;i++ )//重新遍历新数组。
{
int t=temp;
temp=max;
max=t;//将数组中大数和0坐标将换。
System.out.print(a[i]+" ");
}
}
}

//输出结果是:
1 2 3 4 5 10 6 7 8 9 1 2 3 4 5 10 6 7 8 9
前面多1 2 3 4 5 ,后面多 6 7 8 9
帮我优化一下,谢谢

其实你的意思有点模糊,把数组中最大的元素放在最前面,其他元素的位置用不用遵循原来的顺序?。如果要,就是指把最大的元素和第一个元素调换位置:
代码:
class PutZero
{
int max=0;
int temp;
void put(int[] a)//定义方法将数组中大数和0坐标将换。
{
for (int i=0;i<a.length ;i++ )
{
if (a[i]>a[max])
{
max=i;
}
}
temp=a[0];
a[0]=a[max];
a[max]=temp;
for (int i=0;i<a.length ;i++ )//重新遍历新数组。
{
System.out.print(a[i]+" ");
}
}
}
如果只是想将最大的放在第一,其他元素位置随便。可用冒泡算法,用两for循环搞定,亦可变动一下你现有的算法实现:
public class Exercise09
{
public static void main(String[] args)
{
int[] arr={1,2,3,4,5,10,6,7,8,9};//定义数组。
PutZero pz=new PutZero();//new对象。
pz.put(arr);
}
}
class PutZero
{
int max=0;
int temp;
void put(int[] a)//定义方法将数组中大数和0坐标将换。
{
for (int i=0;i<a.length ;i++ )
{
if (a[i]>a[max])
{
temp=a[i];
a[i]=a[max];
a[max]=temp;
//max=i;
}
}
for (int i=0;i<a.length ;i++ )//重新遍历新数组。
{
System.out.print(a[i]+" ");
}
}
}
你自己琢磨下需要哪种吧。不懂hi我。追问

我说的不清楚,很谢谢你,我是要最大元素和第一位交换,其他不变{1,2,3,4,5,10,6,7,8,9}

代码:
void put(int[] a)//定义方法记录最大元素坐标。
{
for (int i=0;ia[max])
{
int p=i;
}
}
for (int i=0;i<a.length ;i++ )//将最大元素和首元素交换。
{
int t=p;
p=max;
max=t;
}

追答

那就是我上面写的第一种。用第一个for循环记录最大数的数组下标。然后将该下标的数和第一个数交换。再用第二个for循环遍历整个数组。

追问

我说的不清楚,很谢谢你,我是要最大元素和第一位交换,其他不变{1,2,3,4,5,10,6,7,8,9}

代码:
void put(int[] a)//定义方法记录最大元素坐标。
{
for (int i=0;ia[max])
{
int p=i;
}
}
for (int i=0;i<a.length ;i++ )//将最大元素和首元素交换。
{
int t=p;
p=max;
max=t;
}

追答

public class Exercise09
{
public static void main(String[] args)
{
int[] arr={1,2,3,4,5,10,6,7,8,9};//定义数组。
PutZero pz=new PutZero();//new对象。
pz.put(arr);
}
}
class PutZero
{
int max=0;
int temp;
void put(int[] a)//定义方法将数组中大数和0坐标将换。
{
for (int i=0;ia[max])
{
max=i;
}
}
temp=a[0];
a[0]=a[max];
a[max]=temp;
for (int i=0;i<a.length ;i++ )//重新遍历新数组。
{
System.out.print(a[i]+" ");
}
}
}
是这样吧?。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-01
冒泡排序就可以了.代码如下
class Exercise09
{
public static void main(String[] args)
{
int[] arr={1,2,3,4,5,10,6,7,8,9};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < i; j++) {
if(arr[i]>arr[j]){
arr[i]=arr[i]^arr[j];
arr[j]=arr[i]^arr[j];
arr[i]=arr[j]^arr[i];
}
}
}
for(int a:arr){
System.out.println(a);
}
}
}本回答被网友采纳
第2个回答  2012-07-01
你可以用双层for循环。