二维数组中元素排序——彻底排序

/* (程序头部注释开始) </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++;
				
			}
        
	    }
	    
	}

	    
}
	    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值