二维数组及冒泡排序

来源:互联网 发布:windows phone符号输入 编辑:程序博客网 时间:2024/05/29 18:33

二维数组

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

  • 二维数组的声明格式
    数据类型 数组名[][];
    数组名 = 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");        }    }}
0 0