注册 登录
编程论坛 新人交流区

[求助]怎样使用指针实现冒泡排序。谢谢了

liuming2008 发布于 2007-10-06 19:35, 1098 次点击
哪个跟我来看一下啊,用指针实现冒泡排序
为什么最后的排序没用啊,
#include<stdio.h>
void main()
{
int i,j,temp;
int *p1,*p2;
int grade[5];
printf("请输入5个数字:\n");
for(i=0;i<5;i++)
{
scanf("%d",&grade[i]);
}
p1=grade;
p2=grade+1;
for(i=0;i<5;i++)
{
for(j=0;j<5-i-1;j++)
{
if(*p1<*(p2+1))
{
temp=*(p2+1);
*(p2+1)=*p1;
*p1=temp;
}
}
}
printf("\n排序后的数为:\n");
for(i=0;i<5;i++)
{
printf("%d ",grade[i]);
}
printf("\n");
}
9 回复
#2
xhtang2007-10-06 19:59
好像你的指针根本就没有移动,而且根本没有必要两个指针。你把冒泡的原理弄清楚应该很简单的。
我帮你改了一下,你参考一下。。
#include<stdio.h>
void main()
{
int i,j,temp;
int *p1,*p2;
int grade[5];
printf("请输入5个数字:\n");
for(i=0;i<5;i++)
{
scanf("%d",&grade[i]);
}
p1=grade;
//p2=grade+1;
for(i=0;i<4;i++)
{
for(j=i;j<5;j++)
{
if(*(p1+i)<*(p1+j))
{
temp=*(p1+j);
*(p1+j)=*(p1+i);
*(p1+i)=temp;

}
}
}
printf("\n排序后的数为:\n");
for(i=0;i<5;i++)
{
printf("%d ",grade[i]);
}
printf("\n");
}
#3
liuming20082007-10-06 20:07
回复:(xhtang)好像你的指针根本就没有移动,而且根...
大哥,太感谢你了。
谢谢啊谢谢了啊
#4
xhtang2007-10-07 13:51
一起学习
#5
nuciewth2007-10-07 13:55

其实数组也是这么实现的.

#6
huxs2007-10-07 14:06

冒泡排序还是比较简单的,呵呵

#7
tianxinguang2007-10-09 16:59
回复:(xhtang)好像你的指针根本就没有移动,而且根...
study
#8
hiksa2007-10-09 17:46
凑贴数
#9
fangjian772007-10-09 20:22
回复:(liuming2008)[求助]怎样使用指针实现冒泡排序...

C没有学过.

#10
qq34121552007-10-09 21:00

#include<stdio.h>
void main()
{
int i,j;
int s[5]={3,1,2,5,4};

int *ps=s;

for(i=0;i<5;i++)
{
for(j=0;j<5-i-1;j++)
{
if(*(ps+j)<*(ps+j+1))
{
*(ps+j)=*(ps+j)+*(ps+j+1);
*(ps+j+1)=*(ps+j)-*(ps+j+1);
*(ps+j)=*(ps+j)-*(ps+j+1);
}
}
}
for(i=0;i<5;i++)
{
printf(" %d ",*(ps+i));
}
}

1