我在做奇偶排序时遇到的问题
这是核心代码
public void oddAndEvensort()
{int j=0;;    //i 为数组的长度
for(j=0;j<i;j++)
{
for( int m=1;m<i-2;m=m+2)
{  long temp1;
if(arr[m]>arr[m+2])
arr[m]=arr[m+2];
    temp1=arr[m];
    arr[m+2]=temp1;
}
for(int n=2;n<i-2;n=n+2)
{   long temp2;
 if(arr[n]>arr[n+2])
arr[n+2]=arr[n];
     temp2=arr[n+2];
    arr[n]=temp2;
}
}
System.out.println("the length of arr is "+i);
}
为什么只和一个数比较呢,谁能帮我改改,谢谢了

解决方案 »

  1.   

    难以说清楚,看代码吧
    public class SortTest
    {
        private long[] arr = { 110,234,23,43,1, 2, 3, 4, 9, 8, 7, 6 };    /**
         * @param args
         */
        public static void main(String[] args)
        {
            (new SortTest()).oddAndEvensort();
        }    public void oddAndEvensort()
        {
            int j = 0;
            int i = arr.length;        for (int m = 0; m < arr.length; m++)
            {
                System.out.println(m + "---" + arr[m]);
            }
            // i 为数组的长度
            for (j = 0; j < i; j++)
            {
                for (int m = j+1; m < i-2 ; m = m + 2)
                {
                    long temp1;
                    if (arr[j + 1] > arr[m + 2])
                    {
                        temp1 = arr[j + 1];
                        arr[j + 1] = arr[m + 2];
                        arr[m + 2] = temp1;
                    }
                }
                for (int n = j+2; n < i; n = n + 2)
                {
                    long temp2;
                    if (arr[j] > arr[n])
                    {
                        temp2 = arr[j];
                        arr[j] = arr[n];
                        arr[n] = temp2;
                    }
                }
            }        for (int m = 0; m < arr.length; m++)
            {
                System.out.println(m + "---" + arr[m]);
            }
        }
    }
      

  2.   

    不好意思,在我的电脑里为什么只比较一遍,这是比较结果,麻烦帮我看看,谢谢阿
    16
    12
    32
    21
    20
    33
    15
    the length of arry is 7
    16123221203315after sort is 
    15
    12
    16
    21
    20
    33
    32
    class oddAndEven
    {
    private int i;
    int num;
       private int maxsize;
    private long arr[];
    public oddAndEven(int max)
    {
    maxsize=max;
    arr=new long[maxsize];
    }
    public  void insert(int value)
    {
    arr[i]=value;
    i++;
    }
    public void display()
    { int j=0;
      for(j=0;j<i;j++)
      {
    System.out.println(arr[j]);
      }
       
    }
    public void oddAndEvensort()
    {int j=0;int num=arr.length ;
         System.out.println("the length of arry is "+i);
         for(int o=0;o<i;o++)
         {
          System.out.print(arr[o]);
         }
         for (j = 0;j< i;j++)
            {
                for (int m = j+1; m < i-2 ; m = m + 2)
                {
                    long temp1;
                    if (arr[j + 1] > arr[m + 2])
                    {
                        temp1 = arr[j + 1];
                        arr[j + 1] = arr[m + 2];
                        arr[m + 2] = temp1;
                    }
                }
                for (int n = j+2; n < i; n = n + 2)
                {
                    long temp2;
                    if (arr[j] > arr[n])
                    {
                        temp2 = arr[j];
                        arr[j] = arr[n];
                        arr[n] = temp2;
                    }
                }
            }
    }
    }
    class oddAndEvenApp 
    {
    public static void main(String[] args)
    {
    oddAndEven oe=new oddAndEven(7);
    oe.insert( 16);
    oe.insert( 12);
    oe.insert( 32);
    oe.insert( 21);
    oe.insert( 20);
    oe.insert( 33);
    oe.insert( 15);
    oe.display();
    oe.oddAndEvensort() ;
            System.out.println("after sort is ");
    oe.display() ;
    }

    }
      

  3.   


    public static void main(String[] args) {
    int[] arr = {99,87,5,4,86};

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

    System.out.println("奇偶排序后-----------------------------");
    int j,k;
    for (int i=0; i<arr.length; i ++) {
                            // 奇数排序
    for (j=1; j<arr.length - 1; j +=2) {
    if (arr[j] > arr[j + 1]) {
    int temp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = temp;
    }
    }

                            // 偶数排序
    for (k=0; k<arr.length - 1; k +=2) {
        if (arr[k] > arr[k + 1]) {
    int temp = arr[k];
    arr[k] = arr[k + 1];
    arr[k + 1] = temp;
    }
    }
    }

    for (int i=0[code=Java]; i<arr.length; i ++) {
    System.out.println("order arr " +i+ " = " + arr[i] );
    }
    }[/code]