鱼C论坛

 找回密码
 立即注册
查看: 6741|回复: 2

用指针方法对10个整数按从大到小顺序排序(选择排序法)

[复制链接]
发表于 2012-10-31 15:11:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
int a[10],*p;
void sort(int *q ,int n);
printf("please enter 10 numbers:\n");
for(p=a;p<a+10;p++)
scanf("%d",p);
sort(p,10);
for(p=a;p<a+10;p++)
printf("%3d",*p);
return 0;
}
void sort(int *q ,int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(*(q+j)>*(q+k))k=j;
if(k!=i)
{
t=*(q+i);
*(q+i)=*(q+k);
*(q+k)=t;
}
}
}

                               
登录/注册后可看大图

怎么还是没有排序成功呢,哪里出错了
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-10-31 16:25:36 | 显示全部楼层
自己修改好了,第九行的sort(p,10)改为sort(a,10)就好了,此处不能用sort(p,10)因为在给数组赋值时p已指向数组末位置。感谢鱼cqq群的朋友的热心解答
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-31 16:27:12 | 显示全部楼层
#include<stdio.h>

int main()
{
        void sort(int *q ,int n);

        int a[10],*p;

        printf("please enter 10 numbers:\n");

        for(p=a;p<a+10;p++)
                scanf("%d",p);
        sort(p,10);

        for(p=a;p<a+10;p++)
                printf("%3d",*p);

        return 0;

}
void sort(int *q ,int n)
{
        int i,j,k,t;
        for(i=0;i<n-1;i++)
        {
                k=i;
                for(j=i+1;j<n;j++)
                        if(*(q+j)>*(q+k))k=j;                //你自己想下*(q+i) 是一个值吗? q是什么  ? q是地址 地址直接能与j相加吗?
                if(k!=i)
                {
                        t=*(q+i);
                        *(q+i)=*(q+k);
                        *(q+k)=t;
                }
        }
}
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 02:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表