1. 程式人生 > >二維陣列中元素排序——徹底排序

二維陣列中元素排序——徹底排序

/* (程式頭部註釋開始) </p><p>* 程式的版權和版本宣告部分 
* Copyright (c) 2011, 煙臺大學計算機學院學生                              
* 作    者:   李兆慶                         
* 完成日期:   2012      年   9    月    18   日 
* 輸入描述:   
* 問題描述及輸出:  編寫一個Java應用程式,自己考慮到既然要排序和排徹底點啊點啊,所以就得這樣排出後陣列中的元素更加有層次感。歡迎也希望大家給出寶貴的建議!
* 實現功能:將二維陣列中元素由大到小依次排序並輸出
1 4 5 6
7 2 10 11
9 8 12 3,
對調後結果:
12 11 10 9
8 7 6 5
4 3 2 1
* 程式頭部的註釋結束 
*/


public class Num{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
     	int[][] a = { { 1, 4, 5, 6 }, { 7, 2, 10, 11 }, { 8, 9, 12, 3 } };
     	
    	System.out.println("對調前輸出陣列為:");
    	
		printMatrix(a);               //按二維方式輸出陣列
		
		printNewMatrix(a);           //對調後輸出陣列
		
		System.out.println("對調後輸出陣列為:");
		
		printMatrix(a);               //按二維方式輸出陣列

	}
	
	//按二維方式輸出陣列
	
	static void printMatrix(int[][] a){
		
		for (int i = 0; i < a.length; i++){
			
			for (int j = 0; j < a[i].length; j++){
				
				System.out.print(a[i][j]+"   ");
				
			}
			
			System.out.println();
		}
		
	}
	
	//對調後輸出陣列
	
	static void printNewMatrix(int[][] a){
		
		int [] c = new int [a.length * a[0].length];
		
		int  m = 0;
	    for (int i = 0; i < a.length; i++){
	    	
			for (int j =0; j < a[i].length; j++){ 
				
				c[m] = a[i][j];
				
				m++;
				
			}
        
	    }
	    int n = 0;
	    
	    for (int i = 0; i < c.length; i++){
	    	
	    	for (int j = 0 ; j<c.length - i - 1; j++){
	    		
	    		if (c[j]<c[j+1]){
	    			
	    			n = c[j];
	    			
	    			c[j] = c[j+1];
	    			
	    			c[j+1] = n;
	    			
	    		}
	    		
	    	}
	    	
	    }
	    
	    System.out.println("陣列中所有元素有大到小排序為: ");
	    	
	    for (int i = 0; i < c.length; i++){
	    	
	    	System.out.print(c[i]+"  ");
	    	
	    }
	    System.out.println();
	    
	    int r = 0;
	    
        for (int i = 0; i < a.length; i++){
        	
	    	
			for (int j =0; j < a[i].length ; j++){ 
				
			    a[i][j] = c[r];
				
				r++;
				
			}
        
	    }
	    
	}

	    
}