/**
 * 解决问题:设计将数组A[1][n]中所有奇数移到偶数之前的算法,不另外增加存储空间,时间复杂度为o(n)
 * 
 * 
@author maodou Jan 11, 2010
 * 
 
*/

public class Test {

    
/**
     * 功能:实现将奇数排序到偶数前面。
     * 
     * 
@param arrays
     
*/

    
public static void sort(int[] arrays) {

        
//
        int len = arrays.length - 1, midVariable = 0;
        
for (int i = 0; i < len;) {

            
// 判断当前值是否是偶数。是偶数,则从数据末尾给他找交换位置。
            
// 是奇数,则无操作,判断下一个值。
            if ((arrays[i] % 2== 0{

                
// 判断最后一个数是否是奇数,如果是,则将找到的偶数与之交换。
                
// 否则,向下移动一位,继续比较交换,直到找到一个排序偶数后面的奇数位置。
                if (arrays[len] % 2 != 0{
                    midVariable 
= arrays[len];
                    arrays[len] 
= arrays[i];
                    arrays[i] 
= midVariable;
                    
//                    
                }

                len
--;
            }
 else {
                i
++;
            }


        }

    }


    
public static void main(String[] args) {

        
int[] arrays = new int[10];

        
// 随机产生10个整数,并输出。
        System.out.println("排序前:");
        
for (int i = 0; i < arrays.length; i++{

            arrays[i] 
= (int) (Math.random() * 10 + 1);
            System.out.print(arrays[i] 
+ "");
        }


        System.out.println();

        
// 排序
        sort(arrays);
        
// 输出排序结果。
        System.out.println("排序后:");
        
for (int i = 0; i < arrays.length; i++{

            System.out.print(arrays[i] 
+ "");
        }

    }

}