/**
 * 解決問題:設(shè)計將數(shù)組A[1][n]中所有奇數(shù)移到偶數(shù)之前的算法,不另外增加存儲空間,時間復(fù)雜度為o(n)
 * 
 * 
@author maodou Jan 11, 2010
 * 
 
*/

public class Test {

    
/**
     * 功能:實現(xiàn)將奇數(shù)排序到偶數(shù)前面。
     * 
     * 
@param arrays
     
*/

    
public static void sort(int[] arrays) {

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

            
// 判斷當(dāng)前值是否是偶數(shù)。是偶數(shù),則從數(shù)據(jù)末尾給他找交換位置。
            
// 是奇數(shù),則無操作,判斷下一個值。
            if ((arrays[i] % 2== 0{

                
// 判斷最后一個數(shù)是否是奇數(shù),如果是,則將找到的偶數(shù)與之交換。
                
// 否則,向下移動一位,繼續(xù)比較交換,直到找到一個排序偶數(shù)后面的奇數(shù)位置。
                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];

        
// 隨機產(chǎn)生10個整數(shù),并輸出。
        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);
        
// 輸出排序結(jié)果。
        System.out.println("排序后:");
        
for (int i = 0; i < arrays.length; i++{

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

    }

}