pta6-1 快速排序
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 快速排序相关推荐
- Golang TDD实践报告:快速排序Quick Sort
Golang TDD实践报告:快速排序Quick Sort [阅读时间:约5分钟] 0.项目需求 1.编写符合项目输入输出的一个测试 2.尝试运行测试 3.先使用最少的代码来让失败的测试先跑起来 4. ...
- 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/
大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...
- 数据结构学习(十三)、快速排序
基本思想:通过一趟排序将待排记录分割成独立两个部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分继续进行排序,重复操作以上操作,已达到整个序列有序的目的 void Quick ...
- 快速排序(快排)--->注释超详细
基本思想: 1.先选取一个基准值(一般选取数组第一个元素). 2.以第一步选取的基准值为标准,然后从最后一个数值开始一步步向前走将数字与基准值进行比较,如果该值大于基准 ...
- 快速排序的两种实现方法(c语言版本)
经过调研发现,对任意无序整数数组,快速排序有两种实现方法,这里简单阐述下思路: 思路一:随意选择一个基准元,一般选择数组的起始元或末尾元,Weiss这本书上特意搞了个算法来选择基准元,--,总之就是基 ...
- 【经典算法】快速排序
与归并排序一样,快速排序使用也使用了分治的思想.下面是对一个典型的子数组A[p,...,r]进行快速排序的三步分治过程: 分解:数组A[p,...,r]被划分成两个(可能为空)子数组A[P,...,q ...
- 20140725 快速排序时间复杂度 sTL入门
1.快速排序的时间复杂度(平均时间复杂度为) 数组本身就有序时,效果很差为O(n^2) 2.STl入门 (1) C++内联函数(inline)和C中宏(#define)区别 内联函数有类型检查,宏定义 ...
- java 快排_八大排序-快速排序(搞定面试之手写快排)
概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...
- 排序学习之---快速排序
一.前言 快速排序是一种交换排序,它由C. A. R. Hoare在1962年提出. 二.算法思想 快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都 ...
- java 冒泡排序和快速排序 实现
面试的时候经常会遇到面试官让你直接手写排序算法,下面是冒泡排序和快速排序的实现. 冒泡排序 基本流程就是,自下而上比较相邻的两个元素进行比较,让大的元素往下面沉,较小的往上冒.按照排序规则进行比较,如 ...
最新文章
- php7 pdo mysql_PHP7添加pdo_mysql扩展
- 海外 谷歌 app api_Google App Engine Java功能和命名空间API
- api商品分享源码_谈谈微服务中的 API 网关(API Gateway)
- Axure RP chrome插件显示已损坏或者无法安装的解决方法
- indesign拖进去颜色变灰_在 InDesign 中管理颜色
- 设置 git/npm/bower/gem 镜像或代理的方法
- python collections,函数等笔记
- Lnmp架构之PHP
- Codeforces #499 Div2 E (1010C) Border
- 学习SpringBoot(1)入门及简单的配置
- iOS求职之OC面试题
- 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索...
- Atitit 网络设备的自动发现机制 需求如下: 1、自动获取当前设备所在网段及当前与当前网段有连接的网段的所有IP,并判断出是哪类设备。如:服务器、交换机、防火墙等。 2、如何根据第1点得到的
- wxPython 入门教程.
- 【海康威视】WPF客户端二次开发:【4】Chrome浏览器调用客户端程序
- 尚学堂马士兵Oracle教程 笔记
- kaldi mobvoihotwords 唤醒词识别教程
- 【测试实习生基本要求】
- Python实现天气查询功能(外加Excel技巧)
- Verilog HDL 语法整理 (一)