栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

快速排序(Java语言实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

快速排序(Java语言实现)

快速排序:是对冒泡排序的一种改进。
基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
1、选定pivot中心轴;
2、将大于pivo中心轴的数字放在pivot的右边;
3、将小于pivo中心轴的数字放在pivot的左边;
4、分别对左右子序列重复前三步操作。

图解:

代码实现:
中轴值为数组的第一个元素:

    public static void quickSort(int[] arr,int L, int R) {
        if(L>=R) {
            return;
        }
        int left = L, right = R;
        int pivot = arr[left]; //中轴值为数组的第一个元素:
        while(left < right) {
            while(left < right && arr[right] >= pivot) {
                right--;
            }
            arr[left] = arr[right];
            while(left < right && arr[left] <= pivot) {
                left++;
            }
            arr[right] = arr[left];
        }
        arr[left] = pivot;
        quickSort(arr,L,right-1);
        quickSort(arr,right+1,R);
    }

中轴值为数组的中间元素:

 public static void quickSort2(int[] arr, int L, int R) {
        int left = L, right = R;
        int temp = 0;
        int pivot = arr[(L + R) / 2];
        //while循环的目的是让比pivot值小的放到左边,比pivot值大的放到右边
        while(left < right) {
            while (arr[left] < pivot) {
                left++;
            }
            while (arr[right] > pivot) {
                right--;
            }
            if (left >= right) {
                break;
            }
            temp = arr[left];
            arr[left] = arr[right];
            arr[right] = temp;
            if (arr[left] == pivot) {
                right--;
            }
            if (arr[right] == pivot) {
                left++;
            }
        }
        if(left == right) {
            left++;
            right--;
        } //没有这段代码会出现栈溢出错误
        //向左递归
        if(Lleft) {
            quickSort(arr,left,R);
        }
    }

快速排序用到了分治算法的思想。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292727.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号