算法系列-----矩阵(八)-------------矩阵元素排序

其实这个内容是对列向量或者行向量进行排序,实质是进行一维数组的排序  

说白了就是维度处理:


用冒泡法对一维数组的排序:

	// 冒泡法对数组中的元素从小到大排序
	/**
	 * 冒泡法对数组中的元素从小到大排序
	 * 
	 * @param args
	 *            参数b浮点型(double)数组
	 * @return 返回值是一个浮点型二数组
	 */
	public static double[] MinToMax(double[] b) {
		double temp = 0;
		for (int i = 0; i < b.length - 1; i++) {
			for (int j = 0; j < b.length - 1; j++) {
				if (b[j + 1] < b[j]) {
					temp = b[j];
					b[j] = b[j + 1];
					b[j + 1] = temp;
				}
			}
		}
		return b;
	}

测试结果:

测试数据
--------------------------------
	5.0	6.0	9.0	8.0
一维数组排序
--------------------------------
	5.0	6.0	8.0	9.0

	// 冒泡法对数组中的元素从大到小排序
	/**
	 * 冒泡法对数组中的元素从大到小排序
	 * 
	 * @param args
	 *            参数b浮点型(double)数组
	 * @return 返回值是一个浮点型二数组
	 */
	public static double[] MaxToMin(double[] b) {
		double temp = 0;
		for (int i = 0; i < b.length - 1; i++) {
			for (int j = 0; j < b.length - 1; j++) {
				if (b[j + 1] > b[j]) {
					temp = b[j];
					b[j] = b[j + 1];
					b[j + 1] = temp;
				}
			}
		}
		return b;
	}

测试结果:

测试数据
--------------------------------
	5.0	6.0	9.0	8.0
一维数组排序
--------------------------------
	9.0	8.0	6.0	5.0

	// 冒泡法对数组中的元素从大到小排序,并记录排序后元素在数组中的位置
	/**
	 * 冒泡法对数组中的元素从大到小排序
	 * 
	 * @param args
	 *            参数b浮点型(double)的一维数组
	 * @return 返回值a是一个浮点型(double)的二维数组,期中第一记录新的排序,第二列记录原位置
	 */
	public static double[][] MaxToMin1(double[] b) {
		double[][] a = new double[2][b.length];
		for (int i = 0; i < a[0].length; i++) {
			a[0][i] = b[i];
			a[1][i] = i;
		}
		double temp = 0;
		double location = 0;
		for (int i = 0; i < a[1].length - 1; i++) {
			for (int j = 0; j < a[1].length - 1; j++) {
				if (a[0][j + 1] > a[0][j]) {
					temp = a[1][j];
					a[1][j] = a[1][j + 1];
					a[1][j + 1] = temp;
					location = a[0][j];
					a[0][j] = a[0][j + 1];
					a[0][j + 1] = location;

				}
			}
		}
		return a;
	}

测试结果:

测试数据
--------------------------------
	5.0	6.0	9.0	8.0
一维数组排序
--------------------------------
	9.0	8.0	6.0	5.0
	2.0	3.0	1.0	0.0

然后需要去排矩阵的话,只需对行或者列向量进行排序,然后根据每行A[i]的值比较大小再交换的位置即可

MATLAB里面有专门的方法,不过我没有学习过这个软件。感兴趣的人可以去看看。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值