奇数偶数排序

题目解释:

长度为 n 的整数数组,对数组进行整理,使得所有的奇数都在数组的前面,而所有的偶数都在数组的后面。例如数组为 {1,2,3,4,5,6}. 整理后为 {1,3,5,2,4,6}.


    //判断前后两个元素是否需要交换
    private static boolean isNeedSwap(int a, int b) {
        if (a%2 != 0 && b%2 == 0) {//奇数在前,偶数在后,不需要交换
            return false;
        }
        if (a%2 == 0 && b%2 != 0) {//偶数在前,奇数在后,需要交换
            return true;
        }
        
        /*
         * 如果声明排序后原来的相对位置不能变,则 return a==b
         * 如果需要升序排列,则 return a<b
         * 如需要降序排列,则 return a>b
         */
        
        return a==b;//同奇同偶,顺序不变
        
    }

    //交换函数的实现函数
    private static void Swap(int[] array, int a, int b) {
        int temp;
        temp = array[a];
        array[a] = array[b];
        array[b] = temp;
    }
    
    //利用插入排序来实现,也可以用其他排序方法
    private static void InsertSort(int[] array) {
        for (int i = 1; i < array.length; i++) {
            for (int j = i; j > 0; j--) {
                if ( isNeedSwap(array[j-1], array[j]) ) {
                    Swap(array, j, j-1);
                }
            }
        }
    }
    
    public static void main(String[] args) {
        
        int[] a = {1,3,4,6,0,8,9,12,14,23};
        InsertSort(a);
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]+" ");
        }
    }
    
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容