算法系列-----矩阵(八)-------------矩阵元素排序
2014-10-11 13:23
197 查看
其实这个内容是对列向量或者行向量进行排序,实质是进行一维数组的排序
说白了就是维度处理:
用冒泡法对一维数组的排序:
测试结果:
测试结果:
测试结果:
然后需要去排矩阵的话,只需对行或者列向量进行排序,然后根据每行A[i]的值比较大小再交换的位置即可
MATLAB里面有专门的方法,不过我没有学习过这个软件。感兴趣的人可以去看看。
说白了就是维度处理:
用冒泡法对一维数组的排序:
// 冒泡法对数组中的元素从小到大排序 /** * 冒泡法对数组中的元素从小到大排序 * * @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里面有专门的方法,不过我没有学习过这个软件。感兴趣的人可以去看看。
相关文章推荐
- 每天学习一算法系列(32)(求一个矩阵中最大的二维矩阵(元素和最大))
- C/C++面试之算法系列--打印 N*N 螺旋矩阵
- 各种算法的C#实现系列1 - 合并排序的原理及代码分析
- 算法熟记-排序系列-希尔排序
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 白话经典算法系列之二 直接插入排序的三种实现
- 算法基础系列之三:螺旋形矩阵
- 白话经典算法系列之六 快速排序 快速搞定
- 算法熟记-排序系列-快速排序
- 算法熟记-排序系列-归并排序
- 白话经典算法系列之五 归并排序的实现
- 找到一个二维矩阵中所有包含0的,并且把0元素所在行与列全部转换成0的算法!
- 读书笔记 算法导论 快速排序 QuickSort 使用最后一个元素作为pivot
- 矩阵元素排序
- 算法熟记-排序系列-堆排序
- C/C++面试之算法系列--时间复杂度为o(N)查找1至N-1构成的a[N]重复元素
- C程序:矩阵元素排序
- 每天学习一算法系列(5)(已知两个数组,数组里的元素有正有负,但是都是按照从小到大已经排好序,要求用尽可能小的时间复杂度编写一算法求出两个数组的最大交集)
- 算法熟记-排序系列-基数排序
- 白话经典算法系列之五 归并排序的实现