已知一整型数组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
急求,谢谢了
是快速排列 展开
例如: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
急求,谢谢了
是快速排列 展开
展开全部
//以下在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");
}
//先输入元数个数,再输入元数
//输出为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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不难的,你自己可以写出来的吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据结构 希尔排序还是快速排序,
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询