奇偶数排序

来源:互联网 发布:生产仿真软件 编辑:程序博客网 时间:2024/05/22 04:29

给定一个整数数组,请调整数组中数的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。


一头一尾指针往中间扫描

import java.util.Arrays;public class OddEvenSortTest {    private static boolean IsOddNumber(int data)    {        return (data & 1) == 1;    }    private static void OddEvenSort(int[] a)    {        if(a.length == 0)            return;        int end = a.length - 1;        int begin = 0;        while(begin < end)        {            //如果begin指针指向的是奇数,正常,向右移动            if(IsOddNumber(a[begin]))                begin++;            //如果end指针指向的是偶数,正常,向左移            else if(!IsOddNumber(a[end]))                end--;            else {                int t = a[begin];                a[begin] = a[end];                a[end] = t;            }           }    }    public static void main(String[] args)    {        int a[] = {1,13,4,7,54,                9678,3246,956,3456,234,5,6,7,89,5};        OddEvenSort(a);        System.out.println(Arrays.toString(a));        //for(int i = 0; i < a.length; i++)        //  System.out.print (a[i]);    } }

一前一后指针往后扫描

import java.util.Arrays;public class OddEvenSortTest2 {    private static boolean IsOddNumber(int data)    {        return (data & 1) == 1;    }//  private static void swap(int a, int b)//  {//      int t = a;//      a = b;//      b = t;//  }    private static void OddEvenSort2(int a[])    {        if(a.length == 0)            return;        int i = -1;        for(int j = 0; j < a.length; j++)        {            //a[j]指向奇数,交换            if(IsOddNumber(a[j]))            {                i = i + 1;                int t = a[i];                a[i] = a[j];                a[j] = t;            }        }        int t = a[i+1];        a[i+1] = a[a.length-1];        a[a.length-1] = t;    }    public static void main(String[] args)    {        int a[] = {1,13,4,7,54,                9678,3246,956,3456,234,5,6,7,89,5};        System.out.println(a.length);        OddEvenSort2(a);        System.out.println(Arrays.toString(a));        //for(int i = 0; i < a.length; i++)        //  System.out.print (a[i]);    } }
0 0
原创粉丝点击