6-1 快速排序 (15分)
给一个无序表,使用快速排序算法对它进行排序。

函数接口定义:

int Partition(SqList &L,int low,int high);
void QuickSort(SqList &L, int low, int high);
其中L是待排序表,low和high是排序的区间。裁判测试程序样例:
#include <iostream>
using namespace std;#define MAXSIZE 50
typedef int KeyType;typedef  struct
{ KeyType  key;
} ElemType;  typedef  struct
{ ElemType   r[MAXSIZE+1]; int   length;
} SqList;                      void Create(SqList &L)
{ int i;cin>>L.length;for(i=1;i<=L.length;i++)cin>>L.r[i].key;
}void Output(SqList L)
{ int i;for(i=1;i<=L.length;i++)cout<<L.r[i].key<<" ";cout<<endl;;
}int Partition(SqList &L,int low,int high);
void QuickSort(SqList &L, int low, int high);int main ()
{  SqList L;  int low,high;Create(L);low=1; high=L.length;QuickSort(L,low,high);Output(L);return 0;
}/* 请在这里填写答案 */

输入样例:
在这里填写一组输入
5
3 1 9 5 7
输出样例:
1 3 5 7 9
输入样例:
在这里填写一组输入
5
0 -1 8 -1 2
输出样例:
-1 -1 0 2 8
总代码如下:

#include <iostream>
using namespace std;#define MAXSIZE 50
typedef int KeyType;typedef  struct
{ KeyType  key;
} ElemType;  typedef  struct
{ ElemType   r[MAXSIZE+1]; int   length;
} SqList;                      void Create(SqList &L)
{ int i;cin>>L.length;for(i=1;i<=L.length;i++)cin>>L.r[i].key;
}void Output(SqList L)
{ int i;for(i=1;i<=L.length;i++)cout<<L.r[i].key<<" ";cout<<endl;;
}int Partition(SqList &L,int low,int high);
void QuickSort(SqList &L, int low, int high);int main ()
{  SqList L;  int low,high;Create(L);low=1; high=L.length;QuickSort(L,low,high);Output(L);return 0;
}
int Partition(SqList &L, int low, int high){int base = L.r[low].key;while(low < high){while(low < high && L.r[high].key >= base){high --;}L.r[low].key= L.r[high].key;while(low < high && L.r[low].key <= base){low ++;}L.r[high].key  = L.r[low].key;}L.r[low].key = base;return low;
}
void QuickSort(SqList &L, int low, int high){if(low < high){int base = Partition(L,low,high);QuickSort(L,low,base - 1);QuickSort(L, base + 1, high);}}

pta6-1 快速排序相关推荐

  1. Golang TDD实践报告:快速排序Quick Sort

    Golang TDD实践报告:快速排序Quick Sort [阅读时间:约5分钟] 0.项目需求 1.编写符合项目输入输出的一个测试 2.尝试运行测试 3.先使用最少的代码来让失败的测试先跑起来 4. ...

  2. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  3. 数据结构学习(十三)、快速排序

    基本思想:通过一趟排序将待排记录分割成独立两个部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分继续进行排序,重复操作以上操作,已达到整个序列有序的目的 void Quick ...

  4. 快速排序(快排)--->注释超详细

    基本思想:         1.先选取一个基准值(一般选取数组第一个元素).         2.以第一步选取的基准值为标准,然后从最后一个数值开始一步步向前走将数字与基准值进行比较,如果该值大于基准 ...

  5. 快速排序的两种实现方法(c语言版本)

    经过调研发现,对任意无序整数数组,快速排序有两种实现方法,这里简单阐述下思路: 思路一:随意选择一个基准元,一般选择数组的起始元或末尾元,Weiss这本书上特意搞了个算法来选择基准元,--,总之就是基 ...

  6. 【经典算法】快速排序

    与归并排序一样,快速排序使用也使用了分治的思想.下面是对一个典型的子数组A[p,...,r]进行快速排序的三步分治过程: 分解:数组A[p,...,r]被划分成两个(可能为空)子数组A[P,...,q ...

  7. 20140725 快速排序时间复杂度 sTL入门

    1.快速排序的时间复杂度(平均时间复杂度为) 数组本身就有序时,效果很差为O(n^2) 2.STl入门 (1) C++内联函数(inline)和C中宏(#define)区别 内联函数有类型检查,宏定义 ...

  8. java 快排_八大排序-快速排序(搞定面试之手写快排)

    概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...

  9. 排序学习之---快速排序

    一.前言 快速排序是一种交换排序,它由C. A. R. Hoare在1962年提出. 二.算法思想 快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都 ...

  10. java 冒泡排序和快速排序 实现

    面试的时候经常会遇到面试官让你直接手写排序算法,下面是冒泡排序和快速排序的实现. 冒泡排序 基本流程就是,自下而上比较相邻的两个元素进行比较,让大的元素往下面沉,较小的往上冒.按照排序规则进行比较,如 ...

最新文章

  1. php7 pdo mysql_PHP7添加pdo_mysql扩展
  2. 海外 谷歌 app api_Google App Engine Java功能和命名空间API
  3. api商品分享源码_谈谈微服务中的 API 网关(API Gateway)
  4. Axure RP chrome插件显示已损坏或者无法安装的解决方法
  5. indesign拖进去颜色变灰_在 InDesign 中管理颜色
  6. 设置 git/npm/bower/gem 镜像或代理的方法
  7. python collections,函数等笔记
  8. Lnmp架构之PHP
  9. Codeforces #499 Div2 E (1010C) Border
  10. 学习SpringBoot(1)入门及简单的配置
  11. iOS求职之OC面试题
  12. 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索...
  13. Atitit 网络设备的自动发现机制 需求如下: 1、自动获取当前设备所在网段及当前与当前网段有连接的网段的所有IP,并判断出是哪类设备。如:服务器、交换机、防火墙等。 2、如何根据第1点得到的
  14. wxPython 入门教程.
  15. 【海康威视】WPF客户端二次开发:【4】Chrome浏览器调用客户端程序
  16. 尚学堂马士兵Oracle教程 笔记
  17. kaldi mobvoihotwords 唤醒词识别教程
  18. 【测试实习生基本要求】
  19. Python实现天气查询功能(外加Excel技巧)
  20. Verilog HDL 语法整理 (一)

热门文章

  1. 最优布线问题(三种方法)
  2. js中的yield、yield*和Generator函数
  3. 2021-9-30 背景噪声的研究
  4. 搭建大型分布式服务(二十五)如何将应用部署到TKE容器集群?
  5. 思必驰发布DUI平台,重磅嘉宾圆桌论道语音交互的现状及未来
  6. linux3.0字符设备驱动,v4l2驱动3-linux3.0.8中v4l2_format详解
  7. 盘点程序员的花式赚外快的骚操作
  8. 最简单斐波那契数列输出C语言
  9. 在线PDF转换PPT,不用安装软件
  10. vue中directives的用法