将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8.

xiaoduirenshen 2009-06-27 05:58:36
将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8.
我用冒泡法编出来得到了题目的要求结果,请大家提供不同的方法?
...全文
70224 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wennie911 2009-06-30
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{
int a[]={1,2,3,4,5,6};
int *p[6];
int i=6;
int j;
for(j=0; j<i; j++)
{
p[j]=&a[i-j-1];
}
for(j=0; j<i; j++)
{
printf("%d\n", *p[j]);
}

}

我一般是这么写。
gfxu1989 2009-06-29
  • 打赏
  • 举报
回复
恩,这个方法好!
Damn_boy 2009-06-29
  • 打赏
  • 举报
回复
头尾交换,到中点为结束。
要么就建立一个临时数组来保存那个逆序的
Mr_邪 2009-06-29
  • 打赏
  • 举报
回复
给数组重新赋值不就可以了吗?声明一个临时变量!~然后反着进行一遍赋值就ok了!~是在是没什么技术含量!~懒得写!~
lpf000 2009-06-28
  • 打赏
  • 举报
回复
既然是有序的 直接从尾到头 复制到新数组就好了 更快
Walf_ghoul 2009-06-28
  • 打赏
  • 举报
回复
for循环交换n/2次,2楼代码示例
cheng_fengming 2009-06-28
  • 打赏
  • 举报
回复
将一个数组中的值按逆序重新存放,对于像你这样的有序的数组用冒泡来做没有问题
但是是一个无序的呢,如9,3,1,8,2
所以通用的方法就是用for循环,交换n/2次就可以了,代码参考2楼。
rejoice914 2009-06-28
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090627/17/e5a00b4e-1b26-4afb-92b9-84ac18dcab75.html?7216

参考一下!
xiaoduirenshen 2009-06-28
  • 打赏
  • 举报
回复
大侠,我觉得你这个方法比较冒泡法要好点儿,就是把1和8、6和4交换一下位置就搞定了。
谢谢了哈。
r_e_k_c_a_h 2009-06-28
  • 打赏
  • 举报
回复
额 我是十楼哈 。好多错误哈 。for中的逗号改为 分号 prinft改为 printf
r_e_k_c_a_h 2009-06-28
  • 打赏
  • 举报
回复
我上午才看了这个题哈 。你看下可行不 。 菜鸟哈
#include <stdio.h>
void main()
int i,j,a[5];
for(i=0,i<5,i++)
{scanf("%d,&j");
a[i]=j
}

for(i=4,i>=0,i--)
prinft("%d",a[i]);
cqzj119 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dudongxiao 的回复:]
#include <stdio.h>

int main()
{
int a[5] = {8, 6, 5, 4, 1};
int i = 0, tmp;
for (i = 0; i < 5/2; ++i)
{
tmp = a[4-i];
a[4-i] = a[i];
a[i] = tmp;
}
for (i = 0; i < 5; ++i)
printf("%4d\n", a[i]);

return 0;
}
[/Quote]
空间复杂度为常数,时间复杂度为n/2;

倒序复制数组空间复杂度为n, 时间复杂度为n.

哪个好?
deng1243 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lpf000 的回复:]
既然是有序的 直接从尾到头 复制到新数组就好了 更快
[/Quote]支持
dudongxiao 2009-06-27
  • 打赏
  • 举报
回复
#include <stdio.h>

int main()
{
int a[5] = {8, 6, 5, 4, 1};
int i = 0, tmp;
for (i = 0; i < 5/2; ++i)
{
tmp = a[4-i];
a[4-i] = a[i];
a[i] = tmp;
}
for (i = 0; i < 5; ++i)
printf("%4d\n", a[i]);

return 0;
}
localxiao 2009-06-27
  • 打赏
  • 举报
回复
看排序算法去

很多

70,005

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧