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

6-4 快速排序

时间:2023-12-21 14:22:59浏览次数:30  
标签:int elem high low SqList 排序 快速

本题要求实现快速排序的一趟划分函数,待排序列的长度1<=n<=1000。

函数接口定义:

 
int Partition ( SqList L, int low,  int high );

其中L是待排序表,使排序后的数据从小到大排列。
###类型定义:

 
typedef  int  KeyType;
typedef  struct 
{                      
  KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/                       
  int Length;      
}SqList;

裁判测试程序样例:

 
#include<stdio.h>
#include<stdlib.h>
typedef  int  KeyType;
typedef  struct 
{                      
  KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/                     
  int Length;      
}SqList;
void  CreatSqList(SqList *L);/*待排序列建立,由裁判实现,细节不表*/ 
int Partition ( SqList  L,int low,  int  high );
void Qsort ( SqList  L,int low,  int  high );
int main()
{
  SqList L;
  int i;
  CreatSqList(&L);
  Qsort(L,1,L.Length);
  for(i=1;i<=L.Length;i++)
      printf("%d ",L.elem[i]);
  return 0;
}
void Qsort ( SqList  L,int low,  int  high ) 
{ 
    int  pivotloc;
    if(low<high)
    {  
        pivotloc = Partition(L, low, high ) ;
        Qsort (L, low, pivotloc-1) ; 
        Qsort (L, pivotloc+1, high );
     }
}
/*你的代码将被嵌在这里 */

输入样例:

第一行整数表示参与排序的关键字个数。第二行是关键字值 例如:

10
5 2 4 1 8 9 10 12 3 6

输出样例:

输出由小到大的有序序列,每一个关键字之间由空格隔开,最后一个关键字后有一个空格。

1 2 3 4 5 6 8 9 10 12 
代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 答案:

int Partition ( SqList L,int low, int high ){
L.elem[0]=L.elem[low];
int l=low,r=high;
while(l<r){
while(r>l&&L.elem[r]>=L.elem[0]) r--;
L.elem[l]=L.elem[r];
while(l<r&&L.elem[l]<=L.elem[0]) l++;
L.elem[r]=L.elem[l];
}
L.elem[l]=L.elem[0];
return l;
}

标签:int,elem,high,low,SqList,排序,快速
From: https://www.cnblogs.com/yuanxinglan/p/17918911.html

相关文章

  • GEE好文推荐——利用样本点迁移方法快速实现全球范围内1984年至今基于Landsat影像的土
    最近我新发表了一篇新的文章,也就是利用样本点迁移的方法来快速实现全球长时序快速土地分类,本文发布了应用APP,用户可以在线体验使用快速分类的效果。原文链接:Land|FreeFull-Text|RapidLandCoverClassificationUsinga36-YearTimeSeriesofMulti-SourceRemoteSensing......
  • 快速下载并发布
    rm/web_sites/digg_apis_svc/SGT.DiggApis.Svcwget-O/web_sites/digg_apis_svc/SGT.DiggApis.Svchttp://127.0.0.1:9003/digg_svc/SGT.DiggApis.Svcchmod+x/web_sites/digg_apis_svc/SGT.DiggApis.Svcsystemctlrestartdigg.api.servicesystemctlstatusdigg.api.serv......
  • quartus ii快速写入管脚分配方法
    1.创建.tcl文件set_location_assignmentPIN_92-toXD[4]set_location_assignmentPIN_47-toXD[3]set_location_assignmentPIN_48-toXD[2]set_location_assignmentPIN_70-toXD[1]根据自己的引脚分配修改<>中内容即可,set_location_assignment<PIN_XX>-to2.导入t......
  • Linux服务器快速安装Redis-6.0
    最近开始体验FastGPT开源知识库问答系统,用他们试着开发调试一些小助手。这中间需要使用到Redis,就在自己服务器上进行了安装,特此记录下。环境说明:阿里云ECS,2核8G,X86架构,CentOS7.9操作系统。选择版本1.打开Redis官网下载页面,可以选择需要的版本下载。我这里选择的是6.2.14版本......
  • python之列表的排序、循环、合并
    排序:sorted()显示临时排序cars=['byd','audi','gelly','qirui','chengcheng']print(sorted(cars))print(cars)结果:['audi','byd','chengcheng','gelly','qirui'][�......
  • 5G+云渲染:如何快速推进XR和元宇宙实现?
    XR(扩展现实)领域正在以惊人的速度增长。目前,到2024年,一些专家表示这个行业的价值将达到3000亿美元。这个行业发展如此迅速的部分原因是XR将在商业环境中的带来巨大利益。近年来,很多企业遇到了将增强现实和虚拟现实作为协作、沟通和创造力解决方案的新机遇。正确的工具可以......
  • 如何快速上手Line多开工具
    快速上手Line多开工具的使用指南导语:Line是一款广受欢迎的即时通讯应用程序,但它在同一设备上只允许登录一个帐号。为了方便管理多个Line帐号,使用Line多开工具是一个不错的选择。本文将向您介绍如何快速上手Line多开工具,以实现在同一设备上同时登录多个Line帐号的目标。第一步:下......
  • 【模版】冒泡排序
    刚学C++时书上就会写这个qwq属于最简单的排序算法惹。算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对......
  • 【模版】选择排序
    选择排序(Selectionsort)是一种简单直观的排序算法。1.基本思想首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的思想其实和冒泡排序有点类似,都......
  • Mongodb快速入门
    目录简介MongoDB基础知识安装&配置基本数据类型CURD操作数据库操作集合操作(表)文档操作新增文档查询文档修改文档删除文档聚合Pymongo简介MongoDB是一款强大、灵活、且易于扩展的通用型数据库易用性MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库。不采用......