java排序算法3(冒泡排序、快速排序)

冒泡排序---稳定

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

        for (int i = 0; i <arr.length-1; i++) {//第几轮
            boolean flag=false;//是否交换过
            for (int j = 0; j <arr.length-i-1; j++) {//两两比较
                if (arr[j]>arr[j+1]){
                    int tmp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=tmp;
                    flag=true;
                }
            }
            if (!flag) {//如果没有交换,说明提前排好序了,直接结束
                break;
            }
        }
平均时间复杂度 最好 最坏 空间复杂度
O(n²) O(n) O(n²) O(1)

快速排序---不稳定

双边快排

    //快速排序
    public void QuickSort(int[] arr, int l, int h) {
        if (l >= h) {
            return;
        }
        int tmp = arr[l];//第一个数为基准
        int i = l;
        int j = h;
        while (i < j) {
            //j从右向左
            while (i < j && arr[j] > tmp) {
                j--;
            }
            //i从左向右走
            while (i < j && arr[i] <= tmp) {
                i++;
            }
            swep(arr, i, j);

        }
        //基点交换
        swep(arr, l, j);
        QuickSort(arr,l,i-1);//左边递归
        QuickSort(arr,i+1,h);
        // return i;
    }
posted @ 2023-04-26 16:43  一个苦逼的23届毕业生  阅读(15)  评论(0编辑  收藏  举报