首页 > 其他分享 >快速排序

快速排序

时间:2024-08-14 20:38:48浏览次数:9  
标签:arr int pivotIndex high low 排序 快速

1、

public class QuickSort {

    // 主函数,调用快速排序算法
    public static void quickSort(int[] arr, int low, int high) {
        if (low < high) {
            // 获取分区点
            int pivotIndex = partition(arr, low, high);

            // 对左子数组进行快速排序
            quickSort(arr, low, pivotIndex - 1);

            // 对右子数组进行快速排序
            quickSort(arr, pivotIndex + 1, high);
        }
    }

    // 分区函数,返回基准元素的最终位置
    public static int partition(int[] arr, int low, int high) {
        int pivot = arr[high];  // 选择最右边的元素作为基准
        int i = low - 1;        // i用于记录比基准小的元素的最右边界

        for (int j = low; j < high; j++) {
            if (arr[j] <= pivot) {
                i++;
                // 交换 arr[i] 和 arr[j]
                swap(arr, i, j);
            }
        }

        // 将基准元素放到正确位置
        swap(arr, i + 1, high);
        return i + 1;  // 返回基准元素的位置
    }

    // 辅助函数:交换数组中两个元素的位置
    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        int[] arr = {10, 7, 8, 9, 1, 5};

        System.out.println("排序前的数组:");
        printArray(arr);

        quickSort(arr, 0, arr.length - 1);

        System.out.println("排序后的数组:");
        printArray(arr);
    }

    // 辅助函数:打印数组
    public static void printArray(int[] arr) {
        for (int num : arr) {
            System.out.print(num + " ");
        }
        System.out.println();
    }
}

 

 

标签:arr,int,pivotIndex,high,low,排序,快速
From: https://www.cnblogs.com/Jomini/p/18359732

相关文章

  • 不同类型电动汽车充电负荷蒙特卡洛法模拟(常规充电、快速充电、更换电池)(Matlab代码实现
     ......
  • 8个快速提升工作效率的印象笔记(Evernote)使用技巧,你掌握了吗?
    印象笔记(Evernote)是一款强大的笔记软件,它可以帮助用户更好地组织和管理信息。为了提升使用印象笔记的效率,以下是几个实用的技巧:1.快速记录想法1.1快速创建笔记印象笔记的电脑和手机客户端都有快速创建笔记的功能。在主屏向下滑动,可以在通知栏中添加笔记。如果下滑后没有......
  • 【题解】【模拟】——帮贡排序
    【题解】【模拟】——帮贡排序帮贡排序题目背景题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.题意解析1.1.结构体储存信息1.2.输入后调整职务的排序规则1.3.分配职务的方法1.4.职务的映射1.5.输出时的排序规则1.6.主函数2.代码帮贡排序题目背景在......
  • 【WEB系列】快速识别目标站点:Windows Linux服务器探秘
    一、利用大小写敏感性差异二、分析HTTP响应头信息三、利用系统命令探测四、分析网页内容和脚本五、总结在网络安全工作中,快速判断目标站点的操作系统类型至关重要,这可以帮助安全人员制定针对性的攻击策略或防御措施。传统的方法依赖于端口扫描、指纹识别等工具,但这些方法......
  • 进阶 Java冒泡排序递归法 有点难度哦
    简介这里有用到递归的冒泡排序思路,难度对新手很大,不明白递归和冒泡排序的小伙子可以先看看我的其他两个文章。连接在这里:Java冒泡排序https://blog.csdn.net/ouhexie/article/details/140985984?spm=1001.2014.3001.5501Java递归算法https://blog.csdn.net/ouhexie/articl......
  • 我的Golang语言学习日记(简单快速易懂,保姆级包教会!)
    文章目录前言一、Golang是什么?二、Golang本地部署1.引入库2.读入数据总结前言随着云的不断发展,Golang这门语言也越来越重要,很多人都开启了学习Golang,本文就介绍了Golang的基础内容。一、Golang是什么?Golang,也被称为Go,是由Google公司于2009年发布的一种开源编......
  • 【python】pygame开发小游戏原来如此简单,掌握这几步就可以快速上手
    ✨✨欢迎大家来到景天科技苑✨✨......
  • 【Python-办公自动化】几秒搞定几天的工作量之根据指定要求汇总求和排序成278张表格
    欢迎来到"花花ShowPython",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。自我介绍:我热衷于将复杂的技术概念以简单易懂的方式呈现给大家,......
  • MySQL快速查询表和列
    1、获取某个库的所有表信息select*frominformation_schema.TABLESwhereTABLE_SCHEMA=(selectdatabase())即可查询当前数据库的表信息,包括了表名,注释等。2、查询某个表的字段信息select*frominformation_schema.COLUMNSwhereTABLE_SCHEMA=(selectdatabase())......
  • IP SSL证书快速申请教程
    在互联网安全领域中,SSL证书是比较普遍的传输数据加密方式之一。SSL证书通过建立加密通道,确保客户端与服务器之间传输的数据不被第三方窃取或篡改。而大多数SSL证书,如单域名SSL证书、多域名SSL证书以及通配符SSL证书,在申请时必须有一个拥有管理权的域名网站,而没有域名网站的,只......