c语言conarry函数 c contrary

看到一个C语言编程题,查找数组中第几大的数及其所在数组中的位置,用快排?

用的sort,设定一个结构体struct Com{ int num; int position; }; 在自定义比较函数bool myCom(Com A,Com B ){return A.num B.num; } 然后设置一个com类型的数组,使用系统的sort函数,对这个数组排序,排完以后是降序,系统的这个sort应该比较快,应该差不多nlogn,然后在对这个数组遍历,找到第几大的,大概总的时间复杂度为O(nlogn + n)吧~

为西山等地区用户提供了全套网页设计制作服务,及西山网站建设行业解决方案。主营业务为网站设计制作、成都网站建设、西山网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

c语言中二维数组如何交换行?

方法有很多:

1、可以直接找到数组对应行的元素,进行交换数据,改变原数组内容。

2、可以定义指针数组指向每行的首地址,交换指针地址,按顺序打印每个指针为首的行数据,得到数据交换效果,原数组内容不变。

我这里用第2种方法给你写了一个,你参考吧。

#include stdio.h

int main ()

{

int nArry[4][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7}};

int *p[4],i,j,*psave,index[2];//p[]分别指向每行首地址

printf("打印原数组:");

i=16; p[0]=nArry[0][0];

while(i--0)

{

if((i+1)%4==0)

printf("\n");

printf("%d ",*(p[0]));

p[0]++;

}

while(1)

{

printf("\n\n输入2个你要交换的行号:");

scanf("%d%d",index[0],index[1]);

for(i=0;i4;i++)

{

p[i]=nArry[i][0];

}

psave=p[index[0]-1];

p[index[0]-1]=p[index[1]-1];

p[index[1]-1]=psave;

printf("第%d行和第%d行调换后的数组为:\n",index[0],index[1]);

for(i=0;i4;i++)  //按顺序打印 首地址指针开头的行数字

{

for(j=0;j4;j++)

{

printf("%d ",*(p[i]+j));

}

printf("\n");

}

}

return 0;

}

这个C语言程序nArry 10可以不要吗,为什么?

nArray [10]=0;这一行是错误的。已经数组使用越界了。应该删除的。

下面就是在上述代码中将此行语句删除以后的运行结果:

c语言,计算1 2 3 4 5逆序数,怎么错了?

#includestdio.h

void conarry(int x[],int n);

main()

{

int a[10] ,i;

for (i=0;i10;i++)

scanf("%d",a[i]);//输入的是地址

conarry (a,9);//输入的是9,如果输入10,肯定是错误的,因为没有a[10]元素

for (i=0;i10;i++)

printf("%d\t",a[i]);

}

void conarry (int x[],int n)

{

int i,t;

for(i=0;i=n/2;i++)//输入的是偶数个,要加=号

{

t=x[i];

x[i]=x[n-i];

x[n-i]=t;

}

} 不懂可以问我!


分享文章:c语言conarry函数 c contrary
标题路径:http://azwzsj.com/article/hehssi.html