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

排序5-快速排序

时间:2024-04-24 21:11:47浏览次数:16  
标签:arr int 基准 start 排序 快速

排序5-快速排序



快速排序(正序)

利用分而治之的思想+挖坑填数排序, 选择一个基准数,

将小于基准数的元素全部放在基准数左边, 大于基准数的元素全部放在基准数右侧.














再对剩下的部分进行快速排序


快速排序c++实现(正序)

//快速排序(正序)
void quickSort(int arr[], int start, int end){
    int i = start;
    int j = end;
    //基准数
    int tmp = arr[start];
    if(i<j){
        while(i<j){
            //下标j不断左移, 从右到左寻找第一个小于tmp的数
            while(i<j && arr[j]>=tmp){
                j--;
            }
            //填坑, 将arr[j]的元素填入arr[i]位置
            if(i<j){
                arr[i] = arr[j];
                i++;
            }
            //下标i不断右移, 从左到右寻找第一个大于tmp的数 
            while(i<j && arr[i]<=tmp){
                i++;
            }
            //填坑, 将arr[i]的元素填入arr[j]位置
            if(i<j){
                arr[j] = arr[i];
                j--;
            }
        }

        //把基准数放到i&j重合的位置
        arr[i] = tmp;
        //对左半部分进行快排
        quickSort(arr,start,i-1);
        //右半快排
        quickSort(arr,i+1,end);

    }
}

标签:arr,int,基准,start,排序,快速
From: https://www.cnblogs.com/HIK4RU44/p/18156364

相关文章

  • [MDP.BlazorCore] 快速建立跨Web、App執行的BlazorApp專案
    團隊資源受限的時候,使用Blazor開發應用系統,只需開發一份程式碼及使用一種程式語言,就同時產出Web跟App應用系統。本篇文章,紀錄使用MDP.BlazorCore所提供的樣板,快速建立跨Web、App執行的BlazorApp專案。為自己留個紀錄,也希望能幫助到有需要的開發人員。.安裝指令:dotnetnewinstal......
  • 双向循环链表:(创建、插入、遍历、求长、查找、删除、排序、销毁)待测
    目录一、双向循环链表存在的意义二、节点的定义三:实现1:创建链表(即创建一个空链表)2:创建新结点3:遍历4:插入头插入尾插入中间插入一、双向循环链表存在的意义数组这样的结构提供了连续内存的访问和使用,链表是对内存零碎空间的有效组织和使用,双向循环链表增大了访问的自由度。二、......
  • 团队练习2:风险控制 1、如果你的项目发布后失败,主要的原因会是什么? 2、每个团队列出自
    学生信息管理系统项目发布后失败的主要原因可能包括:需求分析不准确或不完整,导致系统功能与用户需求不符。技术实现存在问题,如性能低下、安全性不足等。项目管理不善,如进度延误、资源分配不合理等。用户界面设计不佳,导致用户体验差。市场推广不足,用户接受度低。项目中目前面......
  • mpcmdrun.exe 是 Windows Defender 的命令行界面工具,用于运行 Windows Defender 的扫
    mpcmdrun.exe是WindowsDefender的命令行界面工具,用于运行WindowsDefender的扫描和其他安全操作,如更新病毒定义文件、运行快速扫描等。它是WindowsDefender的一部分,用于保护系统免受恶意软件和其他安全威胁的侵害。这个程序通常自动运行,并在后台处理安全任务,以......
  • vr太阳光参数怎么设置,vr快速渲染方法
    ​VR场景中实现逼真的光照效果,太阳光参数的设置尤为关键。真实的太阳光可提升效果图的质感,论VR太阳光参数的设置技巧,包括光源类型选择、光照强度调整、阴影效果优化等多个方面,喜爱一起来看看vr太阳光真实感设置参数吧。vr太阳光高效设置参数1、拖动绘制太阳光(顶视图),在透视图......
  • Python list的交、并、差与排序
    求list的交集、并集、差集set() 函数创建一个无序不重复元素集,通过set可方便求取list的交并差,并可去重#通过set集合>>>list1=[1,2,3]>>>list2=[2,3,4]>>>set1=set(list1)>>>set2=set(list2)>>>set1&set2#交集{2,3}>>>set1|set......
  • 使用 Gradio 的“热重载”模式快速开发 AI 应用
    在这篇文章中,我将展示如何利用Gradio的热重载模式快速构建一个功能齐全的AI应用。但在进入正题之前,让我们先了解一下什么是重载模式以及Gradio为什么要采用自定义的自动重载逻辑。如果您已熟悉Gradio并急于开始构建,请直接跳转到第三部分构建文档分析应用。重载模式具体是......
  • DRF之排序类源码分析
    DRF之排序类源码分析【一】排序类介绍在DjangoRESTframework(DRF)中,排序类用于处理API端点的排序操作,允许客户端请求按特定字段对数据进行升序或降序排序。排序类是一种特殊的过滤类DRF提供了内置的排序类,并且你也可以自定义排序类以满足特定的需求。【二】内置排序类Or......
  • 排序4-希尔排序
    排序4-希尔排序插入排序在以下情况时效率较高当元素序列基本有序元素个数较少希尔排序是对插入排序的优化希尔排序先将元素分组(通常为总长度的一半,例如有8个数据量,则将数据分为4组,每组2个数据),然后再对每一组元素单独进行插入排序,创造出满足上述2个条件......
  • 归并排序
    归并排序是一种基于分治的算法,下面给出我的数组式(半数组,有偏移理解)代码:点击查看代码//注意:我的答案数组下标开始为1,且所有操作区间均为闭区间//时间复杂度:稳定o(nlogn)//空间复杂度:o(n),栈空间:o(nlogn),若开全局数组则可忽略栈空间#include<bits/stdc++.h>using......