四大排序算法之交换排序

目录

说明

冒泡排序

快速排序


说明

为了自己学习方便,我这里总结了四大排序算法涵盖了七种排序算法

分类 算法名称 时间复杂度      空间复杂度 稳定性
插入排序

直接插入排序

希尔排序

O(n^2)   O(1)

O(n^2/3)   O(1)

稳定

不稳定

选择排序

选择排序

堆排序

O(n^2)   O(1)

O(nlogn)  O(1)

不稳定

不稳定

交换排序

冒泡排序

快速排序

O(n^2)   O(1)

全部有序最坏O(n^2)    O(1)

稳定

不稳定

归并排序 归并排序 O(nlogn)  O(n) 稳定

冒泡排序

冒泡排序是从前到后两两比较,把最大的元素放在最后,直到数组有序,下面看代码

public static void booSort(int[] arr){
        if(arr.length==0 || arr.length==1){
            return;
        }
        for (int i = 0; i < arr.length; i++) {
            for (int j =1; j < arr.length-i; j++) {
                //两两比较,大的往后放
                if(arr[j-1]>arr[j]){
                    swap(j-1,j,arr);
                }
            }
        }
    }

快速排序

简单来说,快速排序就是找一个元素,以他为基准,分为大于这个基准区,等于这个基准区,还有小于这个基准区,那个这个元素的位置就定了,然后在它的左半部分,和右半部分继续,直到数组有序。我觉得有点类似于二叉树的前序遍历。下面看代码

public static void quickSort(int[] arr,int L,int R){
        if(arr.length==0 || arr.length==1){
            return;
        }
        if(L=arr[index]){
                R--;
            }
            //左边开始找,直到左边的元素大于index
            while (L

你可能感兴趣的:(排序算法,算法,数据结构)