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

快速排序 2022.01.03

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

快速排序 2022.01.03

快速排序的基本思想:先确定一个中轴值,然后分别从左右两端开始往中间遍历,在遍历的过程中将比中轴值大的放在右边,比中轴值小的放在左边;然后在利用递归的思想将左右两边分别进行快速排序即重复上面操作。

快速排序执行结果:

 快速排序代码:

package DataStructures.sort;

import java.util.Arrays;


public class QuickSort {

    static int count = 0;

    public static void main(String[] args) {
        int[] nums = {-9,78,0,23,-567,70};
        System.out.println("快速排序前:"+ Arrays.toString(nums));
        quickSort(nums,0,nums.length-1);
//        System.out.println("快速排序后:"+ Arrays.toString(nums));
    }

    //快速排序
    public static void quickSort(int[] nums, int left, int right){
        int l = left;
        int r = right;
        int pivot = nums[(left+right)/2];

        int temp = 0;
        while( l < r ){
            //在左边找比中轴值大的值
            while (nums[l] < pivot ){
                l++;
            }
            //在右边找比中轴值小的值
            while ( nums[r] > pivot ){
                r--;
            }

            if( l >= r ){
                break;
            }

            temp = nums[l];
            nums[l] = nums[r];
            nums[r] = temp;

            count++;
            System.out.println("第"+count+"次快排:"+Arrays.toString(nums));

            if( nums[r] == pivot ){
                r--;
            }

            if( nums[l] == pivot ){
                l++;
            }
        }

        //防止栈溢出
        if( l == r ){
            l++;
            r--;
        }

        //左递归
        if( left < r ){
            quickSort(nums,left,r);
        }
        //右递归
        if( right > l ){
            quickSort(nums,l,right);
        }
    }
}

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

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

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