冒泡排序-java二维数组实现

java 二维数组冒泡排序

冒泡排序算法是排序算法里的基础算法之一,原理就是比较两个相邻的元素,将大的元素放在右边,
即在第一趟,首先比较第一个和第二个数,将小数放前,大数放后,然后比较第二个和第三个数,将小数放前,大数放后,如此一直比较下去,直到最后两个数比较完,小数放前,大数放后,第一趟比较结束,就得到了这些数据中最大的数,也就是最后一个数。
重复前面的第一趟,直到最后完成。
下面举例说明一下:一维数组 int[] stu={3,1,9,8,4,2,7};N个数
第一趟排序:
第一次:3和1进行比较,3大于1,交换位置,顺序为:1 3 9 8 4 2 7
第二次:3和9进行比较,3小于9,不交换位置,顺序为:1 3 9 8 4 2 7
第三次:9和8进行比较,9大于8,交换位置,顺序为:1 3 8 9 4 2 7
第四次:9和4进行比较,9大于4,交换位置,顺序为:1 3 8 4 9 2 7
第五次:9和2进行比较,9大于2,交换位置,顺序为:1 3 8 4 2 9 7
第六次:9和7进行比较,9大于7,交换位置,顺序为:1 3 8 4 2 7 9
经过六次后:顺序为 1 3 8 4 2 7 9 找到了最大的数,将它放在最后
第二趟排序:
第一次:1和3进行比较,1小于3,不交换位置,顺序为1 3 8 4 2 7 9
第二次:3和8进行比较,3小于8,不交换位置,顺序为1 3 8 4 2 7 9
第三次:8和4进行比较,8大于4,交换位置,顺序为1 3 4 8 2 7 9
第四次:8和2进行比较,8大于2,交换位置,顺序为1 3 4 2 8 7 9
第五次:8和7进行比较,8大于7,交换位置,顺序为1 3 4 2 7 8 9
经过五次后:顺序为1 3 4 2 7 8 9,找到了8这个次大数
第三趟排序:
第一次:1和3进行比较,1小于3,不交换位置,顺序为1 3 4 2 7 8 9
第二次:3和4进行比较,3小于4,不交换位置,顺序为1 3 4 2 7 8 9
第三次:4和2进行比较,4大于2,交换位置,顺序为1 3 2 4 7 8 9
第四次:4和7进行比较,4小于7,不交换位置,顺序为1 3 2 4 7 8 9
经过四次比较 顺序为 1 3 2 4 7 8 9
第四趟排序:
第一次:1和3进行比较,1小于3,不交换位置,顺序为1 3 2 4 7 8 9
第二次:3和2进行比较,3大于2,交换位置,顺序为1 2 3 4 7 8 9
第三次:3和4进行比较,3小于4,不交换位置,顺序为1 2 3 4 7 8 9
经过三次排序后 顺序为 1 2 3 4 7 8 9
第五趟排序:
第一次:1和2进行比较,1小于2,不交换位置,顺序为1 2 3 4 7 8 9
第二次:2和3进行比较,2小于3,不交换位置,顺序为1 2 3 4 7 8 9
第六趟排序:
第一次:1和2进行比较,1小于2,不交换位置,顺序为1 2 3 4 7 8 9
最终排序结果:1 2 3 4 7 8 9
冒泡排序共进行了N-1趟排序,每进行一趟排序,下一趟就会少排一次,每一趟相当于找到当前序列中的最大数,将最大数放在最后。


package com.lgb.test;
import java.util.Scanner;
/*
 冒泡排序法
 输入2个班3个学生成绩进行排序
 */
public class SortDemo {
    public static void main(String[] args) {
        int[][] stu = new int[2][3];
        int i, j;
        Scanner sc = new Scanner(System.in);
        for (i = 0; i < stu.length; i++) {
            for (j = 0; j < stu[i].length; j++) {
                System.out.println("请输入第" + (i+1) + "个班的第" + (j+1) + "个学生成绩");
                stu[i][j] = sc.nextInt();
            }
        }
        for (i = 0; i < stu.length; i++) {
            for (j = 0; j < stu[i].length - i - 1; j++) {
                if (stu[i][j] > stu[i][j + 1]) {
                    int temp = stu[i][j];
                    stu[i][j] = stu[i][j + 1];
                    stu[i][j + 1] = temp;
                }
            }
        }
        for (i = 0; i < stu.length; i++) {
            System.out.println("第" + (i+1) + "个班学生成绩由小到大:");
            for (j = 0; j < stu[i].length; j++) {
                System.out.println(stu[i][j]);
            }
        }
    }
}

你可能感兴趣的:(排序)