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

快速排序

时间:2022-12-10 20:56:11浏览次数:38  
标签: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 
代码如下:
int Partition ( SqList  L,int low,  int  high ){
  int temp=L.elem[low];
  while(low<high)
  {
    while(low<high&&L.elem[high]>=temp){
      high--;
    }
    if(low<high){
      L.elem[low]=L.elem[high];
      low++;
    }
    while(low<high&&L.elem[low]<temp){
      low++;
    }
    if(low<high){
      L.elem[high]=L.elem[low];
      high--;
    }
    
  }L.elem[low]=temp;
  return low;
}

  

 

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

相关文章

  • function~排序多个班级的成绩
    题目描述把m个班级的学生成绩由高到底进行排序。输入第1行是一个整数m(0<m<100),表示需要排序的班级数。 后面有m组数,每组数分两行:第一行是一个整数n(0<n<50),表示一个班级......
  • ADB命令快速入门
    什么是ADBadb的全称为AndroidDebugBridge,就是起到调试桥的作用。通过adb我们可以方便调试Android程序。环境搭建1需要java环境:安装完JDK需要配置环境变量:......
  • oracle 12.2+支持mysql与postgresql中的collate(排序规则)特性
    sqlserver,mysql,postgresql都支持针对字符串类型定义排序规则的概念(collate),一般来说,排序规则分为三种:基于二进制,是否区分大小写,是否区分重音。例如sqlserver中:SELE......
  • Halcon 快速入门教程
    ​​前言​​​​一,HALCON概述​​​​1.1,HALCON安装​​​二,HALCON架构​​2.1,算子​​​2.1.1,参数和数据结构​​​​2.2,拓展包​​​2.3,接口​​​2.3.1,HALCON-Python......
  • LeetCode HOT 100:搜索旋转排序数组
    题目:33.搜索旋转排序数组题目描述:一个整数数组,数组每个值都不相同,且该整数数组是一个被旋转过的数组。被旋转过的数组是指,由一个递增的数组,从某一个下标开始往后的元素,......
  • P5435 基于值域预处理的快速 GCD
    P5435基于值域预处理的快速GCD思路也就是将x分解成a*b*c,然后在分别与另一个数求解gcd0-1000之内的gcd是可以直接预处理出来的,因为gcd(a,b)=gcd(a%b,b)(a>b)为......
  • 冒泡排序新方式
    #Startwithalistofnumbersthatain'tsortednumbers=[0,5,1,4,2,8]#Keeptrackofwhetheranyswapsweremadeonthepreviousiteration#Ifnoswapswer......
  • 排序组件的使用
    排序在类视图中设置filter_backends属性,使用rest_framework.filters.OrderingFilter过滤器,DRF会在请求的查询字符串参数中检查是否包含了ordering参数,如果包含了ordering......
  • 归并排序应用——剑指 Offer 51. 数组中的逆序对
    (文章目录)题目1.在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例1:输入:[7,5,6......
  • 算法学习笔记(36)——快速幂
    快速幂快速幂快速幂快速幂求逆元快速幂用于快速(在\(O(\logk)\)的时间复杂度之内)求出\(a^k\bmodp\)的结果,\(1\lea,p,k\le10^9\),核心是反复平方法。算......