Problem 2668 --Sort II - Partition

2668: Sort II - Partition

"
Time Limit $1$ 秒/Second(s) Memory Limit $512$ 兆字节/Megabyte(s)
提交总数 $14$ 正确数量 $4$
裁判形式 标准裁判/Standard Judge 我的状态 尚未尝试
难度 分类标签 STL

Partition

Quick sort is based on the Divide-and-conquer approach. In QuickSort(A, p, r), first, a procedure Partition(A, p, r) divides an array A[p..r] into two subarrays A[p..q-1] and A[q+1..r] such that each element of A[p..q-1] is less than or equal to A[q], which is, inturn, less than or equal to each element of A[q+1..r]. It also computes the index q.

In the conquer processes, the two subarrays A[p..q-1] and A[q+1..r] are sorted by recursive calls of QuickSort(A, p, q-1) and QuickSort(A, q+1, r).

Your task is to read a sequence A and perform the Partition based on the following pseudocode: 

   Partition(A, p, r) 

1   x = A[r] 

2   i = p-1 

3   for j = p to r-1 

4       do if A[j] <= x 

5           then i = i+1 

6               exchange A[i] and A[j] 

7    exchange A[i+1] and A[r] 

8    return i+1 

Note that, in this algorithm, Partition always selects an element A[r] as a pivot element around which to partition the array A[p..r].

The first line of the input includes an integer n, the number of elements in the sequence A.

In the second line, Ai (i = 1, 2, ..., n), elements of the sequence are given separated by space characters.

Print the sorted sequence. Two contiguous elements of the sequence should be separated by a space character. The element which is selected as the pivot of the partition should be indicated by [ ].
12
13 19 9 5 12 8 7 4 21 2 6 11
9 5 8 7 4 2 6 [11] 21 13 19 12

1 ≤ n ≤ 100,000 

0 ≤ Ai ≤ 100,000

推荐代码 查看2668 所有题解 上传题解视频得图灵币

本题记录 用 户(点击查看用户) 运行号(点击购买题解) 时 间
算法最快[$19 $ms] 海燕 919133 2022-11-16 23:15:49
内存最少[$2356 $KB] Hunter 761246 2021-07-22 18:35:00
第一AC 计爱玲 360189 2019-01-15 18:25:14
第一挑战 计爱玲 360188 2019-01-15 18:21:01

赛题来源/所属竞赛 会津大学《挑战数据结构与算法》 挑战数据结构与算法

竞赛编号 竞赛名称 竞赛时间 访问比赛