二维数组及冒泡排序

二维数组

如果把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格。

  • 二维数组的声明格式
    数据类型 数组名[][];
    数组名 = new 数据类型[行的个数] [列的个数];
    也可以用下面这种方式
    数据类型 数组名[][]=new 数据类型[行的个数] [列的个数];
  • 二维数组金泰初始化
    数据类型 数组名[][] = {
    {第0行初值},
    {第1行初值},

    {第n行初值},
    };
  • 二维数组的遍历
public class Demo1
{
    public static void main(String[] args){
        int a[][]=new int[2][3];
        a[0][0]=1;
        a[0][1]=2;
        a[0][2]=3;
        a[1][0]=4;
        a[1][1]=5;
        a[1][2]=6;
        //遍历二维数组
        for (int i=0;i<a.length ;i++ )
        {
            for (int j =0;j<a[i].length ;j++ )
            {
                System.out.print(a[i][j]+"\t");
            }
            System.out.println();
        }

    }
}

用for循环的嵌套来遍历二维数组,多维数组就使用多少个多程循环来遍历。

冒泡排序

原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,

这样一趟过去后,最大或最小的数字被交换到了最后一位,

然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子

例子为从小到大排序,

原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |

第一趟排序(外循环)

第一次两两比较6 > 2交换(内循环)

交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |

第二次两两比较,6 > 4交换

交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |

第三次两两比较,6 > 1交换

交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |

第四次两两比较,6 > 5交换

交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第五次两两比较,6 < 9不交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二趟排序(外循环)

第一次两两比较2 < 4不交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二次两两比较,4 > 1交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第三次两两比较,4 < 5不交换

交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第四次两两比较,5 < 6不交换

交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第三趟排序(外循环)

第一次两两比较2 > 1交换

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第二次两两比较,2 < 4不交换

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第三次两两比较,4 < 5不交换

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第四趟排序(外循环)无交换

第五趟排序(外循环)无交换

排序完毕,输出最终结果1 2 4 5 6 9

代码仅供参考

//冒泡排序-从大到小
class Demo9 
{
    public static void main(String[] args) 
    {
        int a[]={11,22,33,44,55,66,77,88,99};
    /*   for (i = 0; i < n; i++)  
              for (j = 1; j < n - i; j++)  
                     if (a[j - 1] > a[j])  
                           Swap(a[j - 1], a[j]);  */
        for (int i =0;i<a.length-1 ;i++ )
        {
            for (int j=0;j<a.length-i-1 ;j++ )
            {
                if(a[j]<a[j+1])
                {
                    int temp = a[j];
                         a[j]=a[j+1];
                         a[j+1]=temp;
                }
            }
            System.out.println("第"+(i+1)+"次排序的结果:");
            for (int j=0;j<a.length ;j++ )
            {
                System.out.print(a[j]+"\t");
            }
            System.out.println();
        }
        System.out.println("最终的排序结果是:");
        for (int i=0;i<a.length ;i++ )
        {
            System.out.print(a[i]+"\t");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值