快排-java

2023-10-27

快排总结:分区方法(3个while),递归使用排序方法。   使用了分治法!!!挖坑赋值法!!!

package cn.com;

import java.util.Arrays;

public class QuickSort {
    public static void main(String[] args) {
        int arr[] = {8,3,2,5,4,7,6,1};
        int low = 0;
        int high = arr.length - 1;
        qsort(arr,low,high);
        System.out.println(Arrays.toString(arr));
    }
    private static void qsort(int[] arr,int low,int high){
        if (low < high) {
            int position = partion(arr, low, high);
            qsort(arr, low, position - 1);
            qsort(arr, position + 1, high);
        }
    }
    private static int partion(int[] arr,int low,int high){
        int baseVal = arr[high];
        while (low < high){
            while (low < high && arr[low] < baseVal){
                low++;
            }
            arr[high] = arr[low];//arr[low]比基准值小,则不管它,比基准值大,则赋给此时的arr[high]
            while (low < high && arr[high] >= baseVal){
                high--;
            }
            arr[low] = arr[high];
        }
        arr[low] = baseVal;
        return  low;
    }
}

总结:partion这个函数,是分区的函数,返回值是基准值排序后的下标

代码中,先将BaseVal设为arr[high]的值,然后将左边的大值赋到arr[high]上,将右边的小值赋到刚才的左边大值位置上,然后逐步向中央逼近。最后将BaseVal补中间的那个窟窿。

分区方法中,使用了3个while。

参考文献:https://blog.csdn.net/MuErHuoXu/article/details/85268039

https://www.jianshu.com/p/e4369c66d4a5

https://blog.csdn.net/qq_41247642/article/details/88967851

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快排-java 的相关文章

  • task3:西瓜书第四章(1)

    本次是阅读西瓜书第四章 以下为笔者是在阅读第四章决策树时一些之前不曾关注地方的补充 1 实际决策树学习算法是基于启发式算法 如贪婪算法 寻求在每个节点上的局部最优决策 这样的算法思想决定了在执行过程中不能保证返回全局最优决策树 例如ID3算
  • 英特尔® 硬件加速执行管理器安装指南 — Microsoft Windows*

    介绍 本文将指导您安装英特尔 硬件加速执行管理器 英特尔 HAXM 这是一款可以使用英特尔 虚拟化技术 VT 加快 Android 开发速度的硬件辅助虚拟化引擎 管理程序 前提条件 英特尔 HAXM 要求首先安装 Android SDK 版

随机推荐

  • 几行代码搞定Android底部导航栏

    底部导航栏的实现也不难 就是下边是几个Tab切换 上边一般是一个FrameLayout 然后FrameLayout中切换fragment 网上有不少关于Android底部导航栏的文章 不过好像都只是关于下边Tab切的 没有实现Tab与fra
  • Hexo搭建博客教程-基于Butterfly主题

    title Hexo搭建博客教程 tags Hexo 博客教程 categories Hexo keywords Hexo 博客教程 description Hexo搭建博客 以及主题butterfly中一些常规配置 cover https
  • sqlite3交叉编译

    1 交叉编译sqllite3可以先从官网下载最新最新的源码进行编译 sqlite3下载sqlite3有两种版本的源代码 sqlite amalgamation 3420000 zip这种是将所有的操作放到sqlite3中进行使用的 虽然官方
  • synchronized 的原理

    文章目录 前言 通过一系列的问题 了解synchronized 总结 前言 synchronized 是一个关键字 在多线程中 为了同步代码块 或者同步方法就会使用到 在面试的过程中 也是非常常见的 所以很有必要掌握 通过一系列的问题 了解
  • 题5:字符串的压缩

    题目 利用字符重复出现的次数 编写一个方法 实现基本的字符串压缩功能 比如 字符串 aabcccccaaa 经压缩会变成 a2b1c5a3 若压缩后的字符串没有变短 则返回原先的字符串 给定一个string iniString为待压缩的串
  • Pymol入门教程--基础

    Pymol入门教程 基础 软件界面介绍 内置demo介绍 打开PyMOL 点击1 1菜单窗口的Wizard菜单 然后点击Demo gt Representations然后在2 3对象窗口和2 4模式窗口之间会出现各种示例 Represent
  • Docker-Compose的安装

    一 什么是Docker Compose Compose项目来源于之前的fig项目 使用python语言编写 与docker swarm配合度很高 Compose 是 Docker 容器进行编排的工具 定义和运行多容器的应用 可以一条命令启动
  • IDEA插件安装以及一些不错的插件的推荐

    IDEA有自己庞大的插件支持 来丰富生态 现在一个好用点的工具如果没有点插件都不好意思 当然了 微信除外 因为人家会告你 一 插件的安装 IDEA的插件安装和别的IDE工具 比如eclipse或者vscode的位置都差不多 还是具体说一下
  • TensorFlow二元-多类-多标签分类示例

    探索不同类型的分类模型 使用 TensorFlow 构建二元 多类和多标签分类器 二元分类 简述 逻辑回归 二元交叉熵 二元分类架构 案例 逻辑回归预测获胜团队 多类分类 简述 Softmax 函数 分类交叉熵 多类分类架构 案例 预测航天
  • Jenkins CI、CD入门操作

    基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署 准备测试项目 准备一个简单的Spring boot 项目 Jenkins新建任务 Jenkins关联Gitlab自动拉取最新
  • 如果一个人真的懂你

    一辈子 遇见一个真正读懂你的人 真的很难 人的一生中会遇到几十甚至上百万个人 其中能和你打招呼 称得上是朋友的人就更少 而在这么多人当中 却很有可能连一个真正懂你的人都没有 有些人 就算相识再久 也无法成为知己 有些人 即使你说了千句 他都
  • 基于错误信息的SQL盲注

    何谓盲注 在SQL注入基础一文中介绍了SQL注入的基本原理 可以轻易注入的原因是知道SQL拼接代码是怎么写的 很多情况下 很难甚至无法知道对方的SQL拼接语句是怎么写的 这里情况下需要做尝试 分析代码是采用何种拼接结构 然后再写个万能注入公
  • python docx 表格样式的设置修改表格列宽

    我的需求是设置表格的列宽和高度 之前的代码使用网上找的方法 table cell y x width Cm 4 无论怎么修改都是无效的 最后正确的代码是 col table columns 1 col width Inches 5
  • 修改mt4服务器地址,修改mt4服务器地址

    修改mt4服务器地址 内容精选 换一换 云平台支持修改主网卡的私有IP地址 具体操作请参见本节内容 如需修改扩展网卡的私有IP地址 请删除网卡 并挂载新网卡 云服务器已关机 如果网卡绑定了虚拟IP或者DNAT规则 需要先解绑 如果网卡上有I
  • [译] APT分析报告:03.OpBlueRaven揭露APT组织Fin7/Carbanak(上)Tirion恶意软件

    这是作者新开的一个专栏 主要翻译国外知名的安全厂商APT报告文章 了解它们的安全技术 学习它们溯源APT组织的方法 希望对您有所帮助 前文分享了钓鱼邮件网址混淆URL逃避检测 这篇文章将介绍APT组织Fin7 Carbanak的Tirion
  • 什么浏览器好用稳定速度快?

    什么浏览器好用稳定速度快 说到浏览器 不知道你们是否有这样的困惑和烦恼 浏览器换了一款又一款 内存大就不说了 体验总是不尽人意 经常弹出一些莫名其妙的资讯 还会出现卡住 奔溃 网页打开不完全 打开速度慢等情况 就拿我最近用的两款360来说吧
  • Nginx+lua实现秒杀系统架构

    能今天做好的事就不要等到明天 以梦为马 学习趁年华 文章目录 前言 一 秒杀业务特点 1 瞬时高并发 2 热点数据 3 读多写少 二 技术难点 1 数据一致性 2 库存超卖 三 秒杀注意事项 1 数据预热 2 请求承载 3 请求拦截 四 微
  • 重新理解Linux交叉编译及编译流程

    参考书籍 1 编译原理 2 嵌入式Linux应用开发 文章目录 一 交叉编译背景 二 gcc和arm linux gcc的常用选项 1 查询gcc帮助 2 常用gcc选项介绍 3 生成一个可执行文件的三种方法 二 交叉编译的四个流程及实例说
  • iOS编程基础-OC(六)-专家级技巧:使用ARC

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 第6章 专家级技巧 使用ARC 本章是第一部分的最后一章 本章介绍ARC内存管理中的细微之处 如直接桥接对象使用ARC的方法 6 1 ARC和对象所有权 我们已经知道
  • 快排-java

    快排总结 分区方法 3个while 递归使用排序方法 使用了分治法 挖坑赋值法 package cn com import java util Arrays public class QuickSort public static void