已知一整型数组a中包含n个元素

已知一整型数组a中包含n个元素(下标1~n),设计一个算法,能在O(n)的时间内将a【1】放置到一个适当的位置k,将数组分成两个部分,其左部分(下标1~k-1)得所有数据... 已知一整型数组a中包含n个元素(下标1~n),设计一个算法,能在O(n)的时间内将a【1】放置到一个适当的位置k,将数组分成两个部分,其左部分(下标1~k-1)得所有数据元素的值均小于等于a【1】得值,右半部分大于等于a【1】的值。
例如:a(n=8):49 38 65 97 76 13 27 53
执行后(k=4):{27 38 13} 49 {76 97 65 53}
要求:1)用c语言
2)设实现该算法得函数名及返回值与参数如下
int Partation(int a[],int n)//函数返回初始a[1]到达最终位置k

急求,谢谢了
是快速排列
展开
 我来答
谦卑又舒爽的小蜜蜂m
2008-12-31
知道答主
回答量:41
采纳率:0%
帮助的人:26.4万
展开全部
//以下在Visual c++通过
//先输入元数个数,再输入元数
//输出为a[1]的位置
#include"stdio.h"
#define MAXSIZE 20
int Partation(int a[],int n)
{ int low =1,high=n;
int pivotkey;
a[0]=a[low];
pivotkey=a[low];
while(low< high)
{
while(low<high&&a[high]>=pivotkey)
--high;
a[low]=a[high];
while(low<high&&a[low]<=pivotkey)
++low;
a[high]=a[low];
}
a[low]=a[0];
return low;
}
void main(){
int n,i,j;int a[MAXSIZE];
//输入待排序关键字,用空格分隔数据
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
printf("%d",Partation(a,n));
printf("\n");

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高金山
2009-01-02 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1708万
展开全部
不难的,你自己可以写出来的吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
林明炉
2008-12-31 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:206
采纳率:0%
帮助的人:117万
展开全部
数据结构 希尔排序还是快速排序,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d17f0654c
2008-12-31
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式