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

快速排序

时间:2024-05-25 17:33:18浏览次数:24  
标签:right temp int quickSort key 排序 快速 left

思想

在待排序序列 \((k_s,k_{s+1},...,k_t)\) 中任意选择一个元素作为分界,将比它小的移至其左,比它大的移至其右,这样该元素就在它排好序的位置上。

过程

合理性:在任何时刻,l的左边都是比key小的元素,r的右边都是比key大的元素

code

递归,quickSort函数实现对一段序列进行快排

void swap(int a[],int i,int j)
{
    int temp;
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
}
void quickSort(int a[],int left,int right)        //调用时:quickSort(a,0,n-1)
{
    if(left>=right)
        return;
    int i,j,key;
    i=left;
    j=right;
    key=a[left];
    while(i<j)
    {
        while(i<j && a[j]>=key)  //从右向左扫描,找到比key小的元素
            j--;
        a[i]=a[j];      //赋给i指向的位置
        while(i<j && a[i]<=key)
            i++;
        a[j]=a[i];
    }
    a[i]=key;
    quickSort(a,left,i-1); 
    quickSort(a,i+1,right);
}

标签:right,temp,int,quickSort,key,排序,快速,left
From: https://www.cnblogs.com/chasetsai/p/18212670

相关文章

  • 在excel中使用python 快速作图示例
    前言Excel中可以使用python算是一个旧闻了,是python之父GuidovanRossum加入微软的重要产品。刚出来的第一时间我也尝鲜了,最近作图的时候,再次使用了这个功能,感觉非常方便,推荐大家也用一下。优点:Python在云端运行,无需部署环境。可以编写脚本来自动化日常的Excel任务......
  • QGIS DEM数据快速获取
    背景Dem是非常重要的数据,30m的精度也是最容易获取的,目前有很多种方式可以获取,比如地理空间数据云,今天介绍用QGIS插件获取。这种方式的最大优势是方便快捷,当我们有评价区域范围图层时,更加方便。插件下载与安装插件-管理并安装插件-搜索下载OpenTopographyDEMDownloader......
  • AOV网与拓扑排序
    AOV网的定义以顶点表示活动,以有向边表示活动之间的优先关系的有向图称为顶点表示活动的网(ActivityOnVertexNetwork),简称AOV网。例如:计算机专业课学习流程为保证流程可执行,AOV网中不应该出现回路。拓扑排序拓扑序列:设G=(V,E)是一个具有n个顶点的有向图,V中的顶点序列v1,v2......
  • 常见的排序算法——归并排序(六)
    本文记述了多向归并排序的基本思想并给出了一份参考实现代码。在说明了算法的性能后用随机数据进行了验证。◆思想在归并排序、归并排序(二)、归并排序(三)、归并排序(四)中记述的归并排序,都是把待排序范围分成两个部分分别排序的。而多向归并排序是把待排序范围分为K个部分,把它们......
  • uniapp快速分享知识点,请求简单封装 登陆 ,支付 , 分享 , 短信,
    第一部份requrety请求封装 备注:关于环境配置ui选择插件安装在我的另一个帐号中前几天也经写了,这个博客就不用在写一遍了另一博客地址:https://www.cnblogs.com/ZzwWan/p/18202502module.exports=(vm)=>{//初始化请求配置uni.$u.http.setConfig((config)=>{......
  • C++ 组含子项自定义排序通用设计
    #include<memory>classBase;usingBaseSp=std::shared_ptr<Base>;classBase{public:  explicitBase(intid):ID(id){}  intID;};classSorter{public:  virtualboolsort(constBaseSp&l,constBaseSp&r){returntrue;......
  • 【JAVA系列】JAVA与C#中List分组、排序方法
    C#中List分组、排序、动态分组定义实体类publicclassStudent{publicstringName{get;set;}publicintAge{get;set;}publicstringGrade{get;set;}}按单个属性分组classProgram{staticvoidMain(){List<Stu......
  • 使用python uiautomation模块,结合多线程快速寻找控件
    文章目录1.形式一2.形式二1.形式一该方法使用多线程进行搜索,主线程不会等待所有子线程返回结果后再继续执行,而是在获取队列中第一个结果后立即继续执行。优势在于一旦有子线程找到结果,主线程就能立即继续执行;劣势在于未找到结果的子线程会持续搜索,直到达到设定的最大......
  • Mobi怎样转PDF?这3种方法教你快速实现
    从Mobi格式到PDF格式的转换是一项非常常见的需求。无论是想将Kindle电子书转换为PDF,还是想在其他设备上阅读Mobi文件,我们都需要一种方法来实现这一转换。那么Mobi怎样转PDF呢?在本文中,我将向您介绍几种简单而有效的方法,帮助您完成Mobi到PDF的转换。方法一:使用在线转换工具在线转......
  • MATLAB基础知识,帮你快速入门【文末送2024最新MATLAB学习教程资料视频+源码】
    1.MATLAB的基本知识1-1基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >>(5*2+1.3-0.8)*10/25 ans=4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。小......