冒泡排序 选择排序 插入排序

排序

十大经典排序算法总结(Java实现+动画)_meibenxiang的博客-CSDN博客_十大排序算法

image

说明

简单的说一下几个排序,都是从左往右排序,从小到大,冒泡排序直接双重for循环,选择排序需要声明minIndex,快速排序需要声明num和j

1 冒泡排序

最基本的排序,牢记数组长度为N,则判断N>0后,使用双层for循环,外层i<N-1,内层j<N-1-i,如果数组[j]>数组[j+1],则交换位置

public static int[] bubbleSort(int[] array){
    if (array.length>0){
        for (int i=0;i<array.length-1;i++){
            for (int j=0 ;j<array.length-1-i;j++){
                if (array[j]>array[j+1]){
                    int temp = array[j+1];
                    array[j+1]=array[j];
                    array[j]=temp;
                }
            }
        }
    }
    return array;
}

2 选择排序

最常用的排序,牢记数组长度为N,则判断N>0后,首先一层for循环,i<N,并且记录本次循环i对应的数组索引minIndex,默认其是当前位置向右看最小值的索引,即minIndex=i,然后第二层for循环,j从i开始,j<N,如果array[j]<array[minIndex]就记录j为最小值索引,即minIndex=j,内存循环结束后令array[i]与array[minIndex]交换位置

public static int[] selectSort(int[] array){
    if (array.length>0){
        for (int i=0 ;i<array.length;i++){
            int minIndex=i;
            for (int j=i;j<array.length;j++){
                if (array[j]<array[minIndex])
                {
                    minIndex=j;
                }
            }
            int temp = array[i];
            array[i]=array[minIndex];
            array[minIndex]=temp;
        }
    }
    return array;
}

3 插入排序

将整个队列看成两个区域,左边是排好的,右边是待排的,牢记数组长度为N,令i从索引1开始,不断从待排区域取值,因此i<N,每次取值时记录该值num=array[i],再声明j,令j=i-1,不断从i-1开始往左取数组的值,因此j≥0并且j--,当num<array[j]时,将排好的值往右移一个位置,这会让array[i]被覆盖,但是这个值已经被num存好,当发现array[j]<num,说明array[j+1]就是num要存放的位置,此时直接break跳出循环

public static int[] insertSort(int[] array){
    if (array.length>0){
        for (int i=1;i<array.length;i++){
            int num = array[i];
            int j;
            for (j = i-1;j>=0;j--){
                if (num<array[j]){
                    array[j+1]=array[j];
                }else{
                    break;
                }
            }
            array[j+1]=num;
        }
    }
    return array;
}
posted @ 2021-10-31 19:33  夏·舍  阅读(38)  评论(0编辑  收藏  举报