当前位置: 首页 > article >正文

快速排序-java版本

一、原理

  1. 选择待排数组区间内最后一个元素作为基准
  2. 小于此基准的放在此元素的左边
  3. 大于此基准的放在此元素的右边
  4. 最后把此基准交换到此数组的应该位置
  5. 最后分别针对基准左区间和右区间分别做递归排序
package org.example;

import java.util.Arrays;

public class SortTest {
    void quickSort(int[] arr, int s, int e) {
        if (s<e) {
            int i = quickSortCore(arr, s, e);
            quickSortCore(arr,s, i-1);
            quickSortCore(arr,i+1, e);
        }
    }

    int quickSortCore(int[] arr, int s, int e) {
       int p = arr[e];
       int lp = s-1; // 小于基准的位置
        for (int i = s; i < e; i++) {
            if (arr[i]<p) {
                lp++;

                int tmp = arr[lp];
                arr[lp] = arr[i];
                arr[i] = tmp;
            }
        }

        // 把基准转移到正确的位置
        int tmp = arr[lp+1];
        arr[lp+1] = arr[e];
        arr[e] = tmp;

        return lp+1;
    }

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

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

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}


http://www.kler.cn/a/404728.html

相关文章:

  • 【网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操解析2
  • 【QT】绘图
  • 机器学习day6-线性代数2-梯度下降
  • Linux驱动开发(9):pinctrl子系统和gpio子系统--led实验
  • 【AI编程实战】安装Cursor并3分钟实现Chrome插件(保姆级)
  • SpringBoot集成多个rabbitmq
  • 【开源免费】基于Vue和SpringBoot的私人健身与教练预约管理系统(附论文)
  • WTV芯片在智能电子锁语音留言上的应用方案解析
  • 用Python做一个websocket服务端
  • Nvidia 系列显卡大解析 B100、A40、A100、A800、H100、H800、V100 该如何选择,各自的配置详细与架构详细介绍,分别运用于哪些项目场景
  • VMware如何安装img镜像,VMware如何安装openwrt软路由(含相关工具镜像)
  • OceanBase 中常用的查询语句
  • Linux Xterm字体修改
  • IDEA一键启动多个微服务
  • 汽车资讯新视角:Spring Boot技术革新
  • Android 日常使用整理
  • 详解php://filter--理论
  • vue3的attr透传属性详解和使用法方式。以及在css样式的伪元素中实现
  • 2446.学习周刊-2024年46周
  • 深入解析QP算法及其Python实现
  • 沃丰科技智能质检与传统质检的对比
  • linux定时删除2周前的日志文件
  • windows基础二
  • sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
  • Docker nginx容器高可用(Keepalived)
  • 每日论文22-24ESSERC一种54.6-65.1GHz多路径同步16振荡器