学习目标:
利用随机数产生一个 10 行, 10 列的整型矩阵。
然后用冒泡法对矩阵进行处理(从小到大)
学习过程:
方法思考过程:
1.首先利用冒泡对数组中的数组进行排序,即给每行先排序
private static void sort(int[][] arr) {
for(int i=0;i<arr.length;i++) {//行数
//对每行进行冒泡
for(int m=0;m<arr.length;m++) {
if(arr[j][i]>arr[j+1][i]) {
int temp=arr[j][i];
arr[j][i]=arr[j+1][i];
arr[j+1][i]=temp;}}}}
2.在对每行进行冒泡的基础上,对每列进行冒泡
private static void sort(int[][] arr) {
for(int i=0;i<arr.length;i++) { //控制行数
//冒泡:
for(int m=0;m<arr.length;m++) {
for(int j=0;j<arr.length-1-m;j++) {
if(arr[i][j]>arr[i][j+1]) { //在行中交换
int temp=arr[i][j];
arr[i][j]=arr[i][j+1];
arr[i][j+1]=temp;
}
if(arr[j][i]>arr[j+1][i]) {//在列中交换
int temp=arr[j][i];
arr[j][i]=arr[j+1][i];
arr[j+1][i]=temp;}}}}
3.实现每行,每列,行的最后一个和下一行的第一个进行冒泡
private static void sort(int[][] arr) {
for(int k =0;k<(arr.length-2);k++) { //补全行尾和下一行行首进行交换的误差,循环次数即交换次数
for(int i=0;i<arr.length;i++) { //控制行数
//冒泡:
for(int m=0;m<arr.length;m++) {
for (int j = 0; j < arr.length-2; j++) {
if(arr[j][9]>arr[j+1][i]) {
int temp=arr[j][9];
arr[j][9]=arr[j+1][i];
arr[j+1][i]=temp;
}
}
for(int j=0;j<arr.length-1-m;j++) {
if(arr[i][j]>arr[i][j+1]) { /行交换
int temp=arr[i][j];
arr[i][j]=arr[i][j+1];
arr[i][j+1]=temp;
}
if(arr[j][i]>arr[j+1][i]) {//列交换
int temp=arr[j][i];
arr[j][i]=arr[j+1][i];
arr[j+1][i]=temp;
}
if(arr[j][9]>arr[j+1][i]) {//行尾和下一行行首交换
int temp=arr[j][9];
arr[j][9]=arr[j+1][i];
arr[j+1][i]=temp;}}}}}}
学习产出:完整代码如下:
只写了从小到大的,从大到小改变交换的大于号小于号,稍微改改就行
package cn.jnzy.example01;
public class Random {
public static void main(String[] args) {
int[][] matrix=new int[10][10];
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=(int)(Math.random()*10);
}
}
System.out.println("下面是程序生成的矩阵\n");
//遍历二维矩阵并输出
for(int k=0;k<matrix.length;k++){
for(int g=0;g<matrix[k].length;g++){
System.out.print(matrix[k][g]+"");
}
System.out.println();
}
sort(matrix);
System.out.println(matrix.length);
//排序后二维矩阵
System.out.println("排序后");
for(int k=0;k<matrix.length;k++){
for(int g=0;g<matrix[k].length;g++){
System.out.print(matrix[k][g]+"");
}
System.out.println();
}
System.out.println("最大值为:"+matrix[9][9]+"最小值为:"+matrix[0][0]);
}
/**
* 排序方法冒泡
* @param liuyongzhen
*/
private static void sort(int[][] arr) {
for(int k =0;k<(arr.length);k++) {
for(int i=0;i<arr.length;i++) {
for(int m=0;m<arr.length;m++) {
for (int j = 0; j < arr.length-2; j++) {
if(arr[j][9]>arr[j+1][i]) {
int temp=arr[j][9];
arr[j][9]=arr[j+1][i];
arr[j+1][i]=temp;
}
}
for(int j=0;j<arr.length-1-m;j++) {
if(arr[i][j]>arr[i][j+1]) {
int temp=arr[i][j];
arr[i][j]=arr[i][j+1];
arr[i][j+1]=temp;
}
if(arr[j][i]>arr[j+1][i]) {
int temp=arr[j][i];
arr[j][i]=arr[j+1][i];
arr[j+1][i]=temp;
}
if(arr[j][9]>arr[j+1][i]) {
int temp=arr[j][9];
arr[j][9]=arr[j+1][i];
arr[j+1][i]=temp;
}
}
}
}
}
}
}
今天又是不明白的一天