您的位置:首页 > 其它

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

2014-10-11 13:23 197 查看
其实这个内容是对列向量或者行向量进行排序,实质是进行一维数组的排序

说白了就是维度处理:

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

// 冒泡法对数组中的元素从小到大排序
/**
* 冒泡法对数组中的元素从小到大排序
*
* @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.02.0	3.0	1.0	0.0


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

MATLAB里面有专门的方法,不过我没有学习过这个软件。感兴趣的人可以去看看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: