超详细的~~~冒泡排序和选择排序

冒泡排序

/**
 * 冒泡排序
 * 核心思想:每次从数组的第一个位置开始两两比较,把较大的元素进行层层交换
 * 最终把当前最大的一个元素存入到数组当前的末尾
 *
 * 冒泡的核心:
 * 1、确定总共要冒几轮:数组的长度-1
 * 2、每轮两两比较
 *      i(轮数)    次数
 *      0           3
 *      1           2     次数=数组的长度-i-1
 *      2           1
 * */
public class Demo {
    public static void main(String[] args) {
        int [] arr=new int[]{55,22,99,77};
        //1、定义一个循环控制总共需要冒泡几轮,数组长度-1
        for(int i=0;i<arr.length-1;i++){
            //控制每轮比较几次
            for(int j=0;j<arr.length-i-1;j++){
                //当前元素大于后面元素
                if(arr[j]>arr[j+1]){
                    //交换位置
                    //定义一个临时变量存储后一个元素
                    int temp=arr[j+1];
                    arr[j+1]=arr[j];
                    arr[j]=temp;
                }
            }
        }
        System.out.println("数组:"+ Arrays.toString(arr));
    }

}

选择排序

import java.util.Arrays;

/**
 * 选择排序
 * 思想:从当前位置开始找出后面的较小值与该位置比较
 * 思路:
 *      1、控制选择几轮,数组长度-1
 *      2、控制每轮从当前位置比较几次
 *          i(轮数)     次数
 *          0             3
 *          1             2         每轮比较的几次:数组的长度-i-1
 *          2             1
 * */
public class Demo {
    public static void main(String[] args) {
        int [] arr={5,1,2,4};
        //定义一个循环控制选择几轮
        for (int i=0;i<arr.length-1;i++){

            //定义一个循环控制每轮比较几次
            for (int j=i+1;j<arr.length;j++){
                if(arr[j]<arr[i]){
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
                }

            }
        }
        System.out.println("数组:"+ Arrays.toString(arr));
    }


}

posted @ 2020-11-08 21:44  池三岁  阅读(178)  评论(0编辑  收藏  举报