前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速排序(Java语言实现)

快速排序(Java语言实现)

作者头像
技术交流
发布2022-11-18 17:07:50
4170
发布2022-11-18 17:07:50
举报
文章被收录于专栏:@学习笔记@学习笔记

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

图解:

在这里插入图片描述
在这里插入图片描述

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

代码语言:javascript
复制
    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);
    }

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

代码语言:javascript
复制
 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(L<right) {
            quickSort(arr,L,right);
        }
        //向右递归
        if(R>left) {
            quickSort(arr,left,R);
        }
    }

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档