例如:有一组任意数字:21,34,56,78,12,45,编写Java代码,最好用循环
实现 第一个数字最大,第二个最小,即:78,56,45,34,21,12

解决方案 »

  1.   

    怎么看都是个排序问题啊!
    Arrays.sort()这个就行了。
      

  2.   

    楼主问题没描述清楚啊,你是要78,12,21,34,56,45吗?我的意思是你只要把最大的和最小的放在前两位,并且保持其他数位置不动,是吗?很土的办法,写个循环实现找前两个最大的数,剩下自己搞定吧。不过要是有重复最大和次最大的,这个办法就稍显笨拙了。public class FindFirstAndSecond {
    public static void main(String args[]){
    int[] iArray = {21, 34, 56, 78, 12, 45};

    int max = iArray[0];
    int maxIndex = 0;
    int secondMax = 0;
    int secIndex = 0;

    for (int i=0; i<iArray.length; i++){
    if (iArray[i] > max){
    secondMax = max;
    secIndex = maxIndex;
    max = iArray[i];
    maxIndex = i;
    }
    else if (iArray[i] < max){
    if (iArray[i] > secondMax){
    secondMax = iArray[i];
    secIndex = i;
    }
    }
    }

    System.out.println(maxIndex +"-"+ max +", "+ secIndex +"-"+ secondMax);
    }
    }
      

  3.   

    对了,上面的代码,我一想不对!下面的这段代码是多余的。
    else if (iArray[i] < max){
                    if (iArray[i] > secondMax){
                        secondMax = iArray[i];
                        secIndex = i;
                    }
                }
      

  4.   

    我也献丑了public class sorting
    {
    public static void main(String[] args)
    {
    int[] arr={5,1,9,7,3,0,8,2,6,4};
    boolean f=true;      // 变量F为开关
    for(int i=0;i<arr.length;i++)
    {
    f=!f;        //开关F在循环交替出现开或关
    if(f)       //当F为false时把最小数交换给arr[i]中
    {

    for(int j=i+1;j<arr.length;j++)
    {
    if(arr[i]>arr[j])
    {
    int temp=arr[i];
    arr[i]=arr[j];
    arr[j]=temp;
    }
    }

    }
    else        //当F为true时把最小数交换给arr[i]中
    {
    for(int j=i+1;j<arr.length;j++)
    {
    if(arr[i]<arr[j])
    {
    int temp=arr[i];
    arr[i]=arr[j];
    arr[j]=temp;
    }
    }
    }


    }
    for(int i=0;i<arr.length;i++)
    {
    System.out.print(arr[i]+" ");
    }
    }
    }