奇数偶数排序

作者: 何恩 | 来源:发表于2014-10-25 11:05 被阅读200次

    题目解释:

    长度为 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]+" ");
            }
        }
        
        
    

    相关文章

      网友评论

        本文标题:奇数偶数排序

        本文链接:https://www.haomeiwen.com/subject/owfvtttx.html