常见算法之冒泡排序,选择排序(Java)

1.冒泡排序:

        相邻数据两两比较,小的放前面,大的放后面.

1.第一轮循环可以在最大索引处获得最大值。

2.外循环:如果有n个数据就执行n-1轮循环

3.内循环:-1是为了防止索引越界,-i是为了提高效率,每一轮应该比上一轮少循环一次

 int[] arr = new int[]{2, 4, 5, 3, 1};
        //外循环为轮数,n-1轮
        for (int i = 0; i < arr.length-1; i++) {
            //内循环:-1是为了防止索引越界,-i是为了提高效率
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");//1 2 3 4 5
        }

2.选择排序

         从0索引开始,拿着每一个索引上的元素跟后面的元素依次比较,小的放前面,大的放后面,以此类推。

1.从0索引开始,跟后面的元素一一比较。

2.小的放前面,大的放后面。

3.第一轮循环结束后,最小的数据已经确定。

4.第二轮循环从1索引开始以此类推。

.........

n个数据循环(n-1)次即可

        int[] arr =new int[]{2,4,5,3,1};
        //i表示这一轮拿着第i个索引上的数据去比
        for (int i = 0; i < arr.length-1; i++) {
            //拿着i和i后面的数据j交换
            for (int j = i+1; j < arr.length; j++) {
                if (arr[i] > arr[j]){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");//1 2 3 4 5
        }

你可能感兴趣的:(Java基础学习,数据结构,排序算法,算法,java)