1045 快速排序 (25分)C++ PAT (Basic Level) Practice (中文)

该篇博客详细介绍了PAT基础级别的一道快速排序题目,强调了主元元素的定义及其在排序过程中的关键作用。主元需满足左右两侧元素的特定条件,即左侧元素最大值小于主元,右侧元素最小值大于主元。博客提出了维护左侧最大值和右侧最小值数组的方法,以此来判断并输出主元,而无需实际执行完整的排序过程。
摘要由CSDN通过智能技术生成

根据快速排序的定义,主元元素是在排序前后位置不变的元素。
一个元素能不能当主元的条件是:
左边:元素的最大值要小于当前值 ; 右边:元素的最小值要大于当前值
也就是说,当前元素 a[i] 必须是 arr[0]-arr[i]的最大值、arr[i]-arr[N-1]的最小值.
维护好两个数组:左侧最大值、右侧最小值 依次比较输出
并不需要对num数组进行排序

在这里插入图片描述

#include<iostream>
#include<algorithm>

using namespace std;

int main(void)
{
   
	int N;
	scanf("%d", &N);
	int* s = new int[N];
	int* max_arr = new int[N];
	int* min_arr = new int[N];
	int* num 
这些引用提供了三种不同的方法来解决题目1045 快速排序。这道题目要求你找到一个数列中所有满足以下条件的数:它比它前面的所有数都大,比它后面的所有数都小。这些数被称为“主元素”。这些方法都是使用Python编写的快速排序算法来解决这个问题。 方法一使用了一个计数器来计算主元素的数量,并使用一个列表来存储所有的主元素。它遍历整个列表,对于每个元素,它检查它是否是主元素。如果是,它将计数器加1,并将该元素添加到列表中。最后,它打印出计数器和列表中的所有元素。 方法二使用了一个类似于方法一的计数器和列表,但是它使用了一个排序后的列表来检查每个元素是否是主元素。它遍历整个列表,对于每个元素,它检查它是否等于排序后的列表中的相应元素。如果是,它将计数器加1,并将该元素添加到列表中。最后,它打印出计数器和列表中的所有元素。 方法三使用了一个类似于方法二的排序后的列表,但是它使用了一个循环来检查每个元素是否是主元素。它遍历整个列表,对于每个元素,它检查它是否大于之前的最大值。如果是,它将该元素添加到结果列表中,并将最大值更新为该元素。否则,它遍历结果列表中的元素,从后往前,删除所有大于等于该元素的元素。最后,它打印出结果列表的长度和所有元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值