1593: A002顺序表:划分1
金币值:0
定数:1
时间限制:1.000 s
内存限制:128 M
正确:8
提交:39
正确率:20.51% 命题人:
题目描述
划分操作是在给定的数组区间内选择一个基准元素(pivot),然后将数组重新排列,使得所有小于等于基准的元素位于基准的左边,所有大于基准的元素位于基准的右边。经过划分后,基准元素就处于其最终排序后的正确位置。划分是快速排序的关键操作。
算法描述如下:
请用c/c++实现求该算法循环过程中元素的移动次数,函数头如下:
int partition(Elemtype a[],int left,int right)//以a[left]为基准对a[left..right]划分
并编写main函数测试该算法。
输入格式
两行:
第1行:整数n(0<n<10000)
第2行:n个整数
输出格式
一个整数
输入样例1 复制
7
5 3 1 6 8 2 10
输出样例1 复制
2
输入样例2 复制
10
5 3 8 4 2 7 1 6 9 10
输出样例2 复制
3
提示
对于样例2详细的模拟步骤如下: