Java数组练习冒泡排序

1、有10个数字要求分别用选择法和冒泡法从大到小输出

选择法:

public class Task011 {

    public static void main(String[] args) {
        /*
        * 有10个数字要求分别用选择法和冒泡法从大到小输出
        * */
        //先用选择发从大到小输出
        //初始化一个长度为10的数组
        int[] array = {10,32,53,54,65,7,76,43,34,88};

        for (int i=0;imax){
                    max = array[j];
                    a = j;
                }
            }
            System.out.print(max+" ");
            int temp = array[i];
            array[i] = array[a];
            array[a] = temp;
        }
        System.out.println();
    }
}

冒泡法:

public class Task012 {

    public static void main(String[] args) {
        /*
        * 有10个数字要求分别用选择法和冒泡法从大到小输出
        * */
        //用选择发从大到小输出
        //初始化一个长度为10的数组
        int[] array = {10,32,53,54,65,7,76,43,34,88};

        for (int i=0;i

2、求一个3*3矩阵对角线元素之和

<提示>程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

public class Task02 {

    public static void main(String[] args) {
        /*
        *   求一个3*3矩阵对角线元素之和
        * <提示>程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
        * */

        //创建一个Scanner类对象
        Scanner sc = new Scanner(System.in);
        //创建一个3*3的二维数组
        int[][] array = new int[3][3];

        //用户输入数据
        for (int i=0;i< array.length;i++){
            System.out.println("------------请输入第"+(i+1)+"行数据------------");
            for (int j=0;j

3、有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

<提示>程序分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。

public class Task03 {

    public static void main(String[] args) {
        /*
        * 有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
        * <提示>程序分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。
        * */

        //创建一个Scanner类对象
        Scanner sc = new Scanner(System.in);

        //创建一个已经升序好的数组并输出
        int[] array = {11,23,54,64,75,89,93,99};
        System.out.println(Arrays.toString(array));

        //首先创建一个比原来的大一的数组,并将元素赋值到新的数组中
        int[] newArray = Arrays.copyOf(array,array.length+1);

        //用户输入要插入数组中的数字
        System.out.println("请输入你要插入的数字:");
        int insertNum = sc.nextInt();

        //获取要插入位置的下标值
        int getLocation = newArray.length-1;
        for (int i=0;igetLocation;i--){
            newArray[i] = newArray[i-1];
        }

        //最后将要插入的值赋予对应的位置并输出
        newArray[getLocation] = insertNum;
        System.out.println(Arrays.toString(newArray));

    }

}

4、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

public class Task04 {

    public static void main(String[] args) {
        /*
        * 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
        * */

        //创建一个Scanner类对象
        Scanner sc = new Scanner(System.in);

        //创建一个数组
        int[] array = new int[6];
        //输入数组的值
        for (int i=0;i< array.length;i++){
            //用户输入值
            System.out.println("请输入数组的值:");
            array[i] = sc.nextInt();
        }
        //交换前的数组为
        System.out.println("输出交换前的数组:");
        System.out.println(Arrays.toString(array));

        //获取最大值,先假设第一个数为最大值
        int max = array[0];
        int subscriptMax = 0; //记录下标
        for (int i=1;imax){
                max = array[i];
                subscriptMax = i;
            }
        }

        //最大值与第一个交换
        array[subscriptMax] = array[0];
        array[0] = max;

        //获取最小值,先假设第一个数为最小值
        int min = array[0];
        int subscriptMin = 0; //记录下标
        for (int i=1;i< array.length;i++){
            if (array[i]

5、有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

public class Task05 {

    public static void main(String[] args) {
        /*
        * 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
        * */

        //创建一个Scanner类对象
        Scanner sc = new Scanner(System.in);
        //获取用户有几个整数
        System.out.println("请输入有几个整数:");
        int n = sc.nextInt();
        System.out.println("请输入你要向后移动多少位置:");
        int m = sc.nextInt();
        //创建一个数组来存储这n个整数
        int[] array = new int[n];

        //初始化数组
        for (int i=0;i< array.length;i++){
            System.out.println("请输入第"+(i+1)+"个整数:");
            array[i] = sc.nextInt();
        }
        //输出移动前的数组
        System.out.println("移动前的数组:");
        System.out.println(Arrays.toString(array));

        //移动数组
        for (int i=1;i<=m;i++){    //外层循环代表移动几个
            int temp = array[array.length-1];
            for (int j= array.length-1;j>=0;j--){    //内层循环来移动一个
                if (j==0){
                    array[j] = temp;
                }else {
                    array[j] = array[j-1];
                }
            }
        }

        //输出移动后的数组
        System.out.println("移动后的数组:");
        System.out.println(Arrays.toString(array));

    }

}

6、定义一个4行4列的二维数组,逐个从键盘输入值,然后将第1行和第4行的数据进行交换,将第2行和第3行的数据进行交换

public class Task06 {

    public static void main(String[] args) {
        /*
        * 定义一个4行4列的二维数组,逐个从键盘输入值,然后将第1行和第4行的数据进行交换,将第2行和第3行的数据进行交换
        * */
        //创建一个Scanner类对象
        Scanner sc = new Scanner(System.in);
        //声明一个4行4列的二维数组并赋值
        int[][] array = new int[4][4];
        for (int i=0;i

7、定义一个4行4列的二维数组,逐个从键盘输入值,将对角线的值清0

public class Task07 {

    public static void main(String[] args) {
        /*
        * 定义一个4行4列的二维数组,逐个从键盘输入值,将对角线的值清0
        * */
        //创建一个Scanner类对象
        Scanner sc = new Scanner(System.in);
        //声明一个4行4列的二维数组并赋值
        int[][] array = new int[4][4];
        for (int i=0;i

8、定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;

public class Task08 {

    public static void main(String[] args) {
        /*
        * 定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;
        * */

        //创建一个Scanner类对象
        Scanner sc = new Scanner(System.in);
        //请输入你n*n的数组n为多少
        System.out.println("请输入你n*n的数组n为多少:");
        int n = sc.nextInt();
        //声明一个n行n列的二维数组并赋值
        int[][] array = new int[n][n];
        for (int i=0;imax){
                    max = array[i][j];
                }
            }
            maxArray[i] = max;
        }

        //输出取出的最大值
        System.out.println("每一行的最大值为:");
        System.out.println(Arrays.toString(maxArray));
    }
}

你可能感兴趣的:(java,算法,数据结构)