java快速排序详解

news/2024/5/20 0:30:19 标签: 快速排序

快速排序

请添加图片描述

private static void quickSortThreeWay(int[] arr, int l, int r) {
        if (l >= r) {
            return;
        }
        swap(arr, l, (int) (Math.random() * (r - l + 1) + l)); //[l,r]随机参数一个基数放在第一个
        int v = arr[l];
        int lt = l;
        int i = lt + 1;
        int rt = r+1;
        //循环完成值的交换
        while (i < rt){
            if(arr[i] < v){
                swap(arr,i,lt+1);
                lt++;
                i++;
            }else if(arr[i] > v){
                swap(arr,i,rt-1);
                rt--;
            }else{
                i++;
            }
        }
        swap(arr,l,lt); //把基数的值放在左边的位置
        quickSortThreeWay(arr,l,lt-1);//左边进行递归
        quickSortThreeWay(arr,rt,r); //右边进行递归
    }
    //用于交换数组中的值
     private static void swap(int[] arr, int i, int j) {
        int temp;
        temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

http://www.niftyadmin.cn/n/877286.html

相关文章

bios提取工具_关于笔记本BIOS如何修改dvmt容量为64M和解锁cfg lock

随着黑苹果&#xff08;hackintosh&#xff09;OpenCore引导的日趋完善&#xff0c;黑苹果的体验也越来越好。但是黑苹果笔记本的体验始终没有台式机那么好&#xff0c;那么&#xff0c;如何完善和优化黑苹果笔记本便成了安装之后要做的事情。当你发觉自己的声卡&#xff0c;显…

iis 8.5数据字段包含错误号。_雅思自学首战听力8.5阅读8备考tips(附九分达人大礼包)...

hi~ 大家周二好鸭&#xff01;之前答应大家的听力和阅读备考tips终于来啦&#xff01;本期主要内容(&#xff65;ᴗ&#xff65;)做题tips(&#xff65;ᴗ&#xff65;)日常练习【听力】做题tips #填空题#审题的时候预判一下&#xff0c;被挖空的是什么词性的单词&#xff0c;是…

手写ArrayList

定义接口:/*** List是线性结构的接口* 里面定义了该线性结构的一些通用操作* 并支持泛型* 继承自Iterable&#xff08;可迭代接口&#xff09; 主要用于遍历数据结构* 其次还有让我们的类可以被foreach循环使用* 不是所有的数据结构都可以像我们数组一样通过角标来访问元素*/ p…

ioinc页面加载前绑定_【JS】322 手把手教你实现前端惰性加载

本文由 chunpengliu从需求出发&#xff1a;在实际的项目开发中&#xff0c;我遇到了一个这样的需求&#xff1a;一个页面模块有很多列表数据展示&#xff0c;每条数据都带有图片&#xff0c;而首次展示的图片只需要不到10张&#xff0c;那么我们还要一次性把所有图片都加载出来…

Linux下root密码搞完了如何更改密码

第一种方法 1.重启系统并按e进入编辑内核参数 2.找到linux这行&#xff0c;末尾空格后 输入rd.break,输入完成后在按ctrlx 3.输入mount | grep sysroot查看挂载方式,这里sysroot是以只读的形式挂载的&#xff0c;所以要改为以可读可写的方式来挂载 4.输入mount -o remount,rw /…

VMware16+RedHat8.3安装步骤(含资源)

VMware16&#xff1a;https://pan.baidu.com/s/1UHs5-v51u3dqzmidt4WY8A 提取码&#xff1a;d2ab RedHat8.3&#xff1a;https://pan.baidu.com/s/1Kj-sQE4Ejoq-ReJxOh5iTQ 提取码&#xff1a;dg4a 1.打开VMware Worksation 点击创建新的虚拟机 2.选择自定义点击下一步 3…

java泛型和类型擦除,详解java 中泛型中的类型擦除和桥方法

在Java中&#xff0c;泛型的引入是为了在编译时提供强类型检查和支持泛型编程。为了实现泛型&#xff0c;Java编译器应用类型擦除实现&#xff1a;1、 用类型参数(type parameters)的限定(如果没有就用Object)替换泛型类型中的所有类型参数。2、 需要保持类型安全的时候插入类型…

Linux学习笔记 (一)

Linux的基本原则 1、由目的单一的小程序组成 2、一切皆文件&#xff0c;设备的访问入口也是文件 3、避免捕获用户接口&#xff0c;尽量不和用户交互 4、配置文件保存在纯文本格式&#xff0c;只要有一个文本编辑器&#xff0c;足以搞定所有的配置查看图像化shell的类型: ec…