三大基础排序:冒泡_插入_选择(每一步都详解)(java)

冒泡_插入_选择


温故而知新,先复习一下这三个基础的排序法,以后再慢慢写详细的

冒泡排序

    public static void bubblesort(int[] arr){/遍历整个数据,每遍历一次数组,就通过从0开始比较左右两个邻居元素,最大的往后移动,直至移动到数据最后。
        int n =  arr.length;  
        if (n<1) return; 
        for (int i=0; i<n; ++i){   //从下坐标0开始遍历整个数组,获得遍历次数
            Boolean flag = false; //建立标志,当发生数据交换时候,为true,没有发生数据交换为false,当没有打算数据交换的时候(已经排好序了),可以直接结束
            for (int j=0; j<n-1-i; ++j){  //开始遍历比较左右两个邻居元素,因为每一次遍历后就把最大值放在最后,每遍历一次就放一个,遍历后的最后元素是已经拍好顺序的了,不需要遍历,所以是n-1-i
                if (arr[j]>arr[j+1]){ //左右邻居元素比较 ,两两比较,大值交换最后,通过遍历把最大值仍到最后
                    int tmp = arr[j]; //用临时变量存放值,交换 
                    arr[j]  = arr[j+1];
                    arr[j+1] = tmp;
                    flag = true; //因为发生了数据交换,flag变true
                }
            }
            if (flag == flag){//如果没发生数据交换了,就证明已经是有序的了,直接退出遍历
                break;
            }
        }
    }

插入排序

 public static void insertionsort(int[] arr){
        int n = arr.length;
        if (n<1) return;  //判断如果只有一个元素,
        for (int i=1; i<n;++i){  //从1为边界开始,左边是排序好的数组,右边是未排序的数据
            int tmp= arr[i];   //获取未排序的数组中一个存储在tmp临时对象。
            int j = i-1;  //获取排序好的数组中的最后一位
            for (;j>=0;--j){  //从最后一位遍历排序好的数组
                if (arr[j]>tmp){  //判断临时对象跟排序数组中的最后一位对比,如果比排序好的数组中的值小,排序好的数组好就往后退一位,
                    arr[j+1] = arr[j];   //往后退位
                }else {break;} //找到合适位置了,不大不小,退出去
            }
            arr[j+1] = tmp; //把这个临时对象插入到合适的位置(j在上面的break前又做了一遍--用来判断break,所以这时候加回去)
        }
    }

选择排序

    public static void selectionsort(int[] arr){
        int n =arr.length;
        if (n<1) return;
        for (int i=0;i<n;++i){ //遍历整个数组
            int minindex = i; //设定第一个元素为最小下标
            for (int j=i; j<n; ++j){   //  i作为边界,左边是排序好的数组,右边是未排序好的数组,遍历右边
                if (arr[j]<arr[minindex]){  //如果在右边发现比最后一个值小,就把右边这个元素下边赋予mindex标记
                    minindex = j;
                }
            }
            int tmp = arr[i];  //让左边最后一个值跟右边minindex标记的元素互换。
            arr[i] = arr[minindex];
            arr[minindex] = tmp;
        }
    }

おすすめ

転載: blog.csdn.net/weixin_43859562/article/details/121804992