0
点赞
收藏
分享

微信扫一扫

数组的排序

钵仔糕的波波仔 2022-04-13 阅读 53
java

数组排序:把一个无序数组,调整元素位置,最终得到一个有序的数组

时间复杂度:衡量算法的执行效率

空间复杂度:算法在执行过程中使用内存空间

稳定性:排序前后,相同的值顺序会不会交换

冒泡排序:

思想:相邻的元素进行比较,如果前面的元素大于后面的元素,交换位置

public class Demo13 {
    public static void main(String[] args) {
        int[] arr = {43,56,74,5,46,45,78,78} ;
        //冒泡排序
        for (int j = 0;j<arr.length-1;j++) {
            for (int i = 0; i < arr.length - 1 - j; i++) {
                if (arr[i] > arr[i + 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }
        for (int i : arr) {
            System.out.println(i);
        }
    }
}

选择排序 :

思想:先从数组中找到最大值,放到末尾,再从剩下的元素中找到最大值,放到剩下元素的末尾

//选择排序
public class Demo14 {
    public static void main(String[] args) {
        int[] arr = {43,56,74,5,46,45,78,78};
        for (int j=0;j<arr.length-1;j++) {
            //最大值的下标
            int maxIndex = 0;
            for (int i = 1; i < arr.length-j; i++) {
                if (arr[i] > arr[maxIndex]) {
                    maxIndex = i;
                }
            }

            //将最大的与尾部交换
            int temp = arr[maxIndex];
            arr[maxIndex] = arr[arr.length - 1-j];
            arr[arr.length-1-j] = temp;
        }
        for (int i :arr
             ) {
            System.out.println(i);
        }
    }
}

插入排序:

思想:先把第一个元素看做是一个有序数组,然后将第二个元素加入数组中,找到合适的位置形成新的有序的数组

//插入排序
public class Demo15 {
    public static void main(String[] args) {
        int[] arr = {43,56,74,5,46,45,78,78};
        for (int j = 1; j<arr.length;j++) {
            int i = j;
            int target = arr[i];
            while (i>0 && target < arr[i - 1]) {
                arr[i] = arr[i - 1];
                i--;
            }
            arr[i] = target;
        }
    }
}

快速排序:

思想:先选定数组中的第一个元素作为一个标准

将所有比它小的元素,放到前面,所有比它大的元素放到后面

将前后两个部分,分别进行快速排序

举报

相关推荐

0 条评论