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

快速排序

时间:2024-06-07 16:11:08浏览次数:15  
标签:right nums int 元素 中轴 排序 快速 left

func sortArray(nums []int) []int {
    quickSort(nums, 0, len(nums)-1)
    return nums
}

// 快排,分治的思想,选一个中轴,
// 把小于中轴的元素放到左边,大于中轴的元素放到右边
// 然后递归处理中轴两边的元素

func quickSort(nums []int, left, right int) {
    if left >= right {
        return 
    }

    i := left
    j := right
    key := nums[left] // 选左边第一个为中轴
    for i < j {
        // 先从右边扫描,找到小于中轴的元素
        for i < j && nums[j] >=key {
            j--
        }
        if i < j {
            nums[i] = nums[j]
        }
        // 再从左边扫,找到大于中轴的元素
        for i < j && nums[i] <= key {
            i++
        }
        if i < j {
            nums[j] = nums[i]
        }
    }
    nums[i] = key // 把中轴元素放在中间
    quickSort(nums, left, i-1)
    quickSort(nums, i+1, right)
}


标签:right,nums,int,元素,中轴,排序,快速,left
From: https://www.cnblogs.com/gdut17code/p/18237383

相关文章

  • 8644 堆排序
    Description用函数实现堆排序,并输出每趟排序的结果输入格式第一行:键盘输入待排序关键的个数n第二行:输入n个待排序关键字,用空格分隔数据输出格式第一行:初始建堆后的结果其后各行输出交换堆顶元素并调整堆的结果,数据之间用一个空格分隔输入样例10548093267......
  • Ubuntu22.04 LAMP快速实战
    好的,我来为您详细说明如下步骤:安装LAMP更新软件源并安装必要的软件包:sudoaptupdatesudoaptinstallapache2mysql-serverphplibapache2-mod-phpphp-mysql测试LAMP安装是否成功:访问http://localhost查看Apache默认页面进入/var/www/html目录,创建info.......
  • 【JS封装-数组操作】强化编程实践:精选JavaScript函数封装集锦-关于数组操作(数组去重、
    目录数组去重数组快速排序过滤数组映射数组数组扁平化数组求和数组最大值数组最小值数组切片数组乱序(洗牌算法)数组去重/***去除数组中的重复项。*@param{Array}array要去重的数组。*@returns{Array}去重后的数组。*/functionuniqueArray(array......
  • 列举常见的排序和查找算法
    在编程和算法设计中,排序和查找算法是非常基础和重要的。以下是常见的一些排序和查找算法:排序算法冒泡排序(BubbleSort)原理:重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序......
  • 数据结构与算法-17_排序算法
    文章目录1.概述比较排序算法非比较排序算法稳定vs不稳定Java中排序2.冒泡排序3.选择排序4.堆排序5.插入排序6.希尔排序7.归并排序递归实现时间复杂度非递归实现8.归并+插入9.快速排序随机基准点处理重复值10.计数排序11.桶排序12.基数排序习题E01.根据另一个数组......
  • .NET之Hangfire快速入门和使用
    原文地址:.NET之Hangfire快速入门和使用-追逐时光者-博客园(cnblogs.com)前言:定时任务调度问题,是一个老生常谈的问题。网上有许多定时任务调度的解决方案,对于我而言很早以前主要是使用Window计划和Window服务来做任务定时执行,然后就开始使用定时任务调度框架Quartz.N......
  • 适用于 Windows 11 的 10 款最佳视频转换器:快速转换高质量视频格式
    您是否遇到过由于格式不兼容而无法在设备上播放视频或电影的情况?您想随意播放从相机GoPro导入的视频,还是以最合适的格式将它们上传到媒体网站?您的房间里有一堆DVD光盘,并想将它们转换为数字格式以方便播放?...所有这些问题都可以通过一个有效的视频转换器一次性解决。实际......
  • Java实现常见的排序算法
    ......
  • Vue3快速上手(三)
    今天我要分享的是Vue3中pinia,组件通信,slot、Vue3中的其他API和新组件等相关知识,话不多说,赶紧上干货!!!5.pinia5.1【pinia简介】Pinia是一个用于Vue.js应用程序的状态管理库。这个库提供了一个简单且直观的API来管理Vue.js应用程序的状态。Pinia是作为Vue.js官方......
  • 数据结构学习笔记-归并排序
    归并排序算法的设计与分析问题描述:设计并分析归并排序算法【算法设计思想】分割(Divide):从中间分割数组,使每个子数组包含一半的元素。这通过计算中点m来完成,通常是(l+r)/2,但为了防止大数溢出,使用l+(r-l)/2。解决(Conquer):递归地对两个子数组应用归并排序,直到......