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

来源:百度知道 编辑:UC知道 时间:2024/06/05 03:15:51
已知一整型数组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

急求,谢谢了
是快速排列

数据结构 希尔排序还是快速排序,

//以下在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

编写一个函数,分别求出一维整型数组a[n]中所有奇数元素和所有偶数元素 从键盘输入10个整数存到整型数组a中,然后统计并输出大于平均值的元素个数,并输出大于平均值的所有元素 VC编程求整型数组a[i]中符合要求的元素个数 已知一个整型数组a[5],其各元素值为4,6,8,10,12。使用指针求该数组元素之积 对数组A中的N(0<N<L00)个整数从小到大进行连续编号,要求不能改变数组A中元素的顺序 编一void型函数maxmin( )通过形参求整型数组a[n]中的最大值和最小值 给定一个具有10个元素的一维数组a,求a中各元素的平均值 C语言中一个数组是否最多包含1023个数组元素 编写一个函数findmax( ),求数组中最大元素及其下标。调用该函数求整型数组a中的最大元素及其下标。 写出一个主函数,为一维整型数组a[10]输入数据,并对数组中的数据进行转置,然后输出此数组中的元素。