c语言用指针写选择排序法
答案:2 悬赏:10 手机版
解决时间 2021-03-07 02:21
- 提问者网友:爱了却不能说
- 2021-03-06 15:12
c语言用指针写选择排序法
最佳答案
- 五星知识达人网友:风格不统一
- 2021-03-06 16:11
你的程序没错,只不过这不是选择法,是冒泡发,选择发如下:
void sort(int *a,int n)
{
int i,j,t,temp;
for(i=0;i
{
t=i;/初始定义t为未排序数的第一个
for(j=i+1;j
{
if(*(a+t)<*(a+j))/挑选出更大的数的位置,把他赋给t
t=j;
}
temp=*(a+i); /t是最大的那个数的位置,把他和未排序的第一个交换位置
*(a+i)=*(a+t);
*(a+t)=temp;
}
}
main()
{
int i,a[10],*p=a;
printf("input zhe array a:\n");
for(i=0;i<10;i++)
scanf("%d",p++);
printf("\n");
p=a;
sort(p,10);
p=a;
printf("zhe sort array is:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
getch();
}
void sort(int *a,int n)
{
int i,j,t,temp;
for(i=0;i
t=i;/初始定义t为未排序数的第一个
for(j=i+1;j
if(*(a+t)<*(a+j))/挑选出更大的数的位置,把他赋给t
t=j;
}
temp=*(a+i); /t是最大的那个数的位置,把他和未排序的第一个交换位置
*(a+i)=*(a+t);
*(a+t)=temp;
}
}
main()
{
int i,a[10],*p=a;
printf("input zhe array a:\n");
for(i=0;i<10;i++)
scanf("%d",p++);
printf("\n");
p=a;
sort(p,10);
p=a;
printf("zhe sort array is:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
getch();
}
全部回答
- 1楼网友:詩光轨車
- 2021-03-06 16:31
1. 这叫求最值问题,而不是排序
2. 指针在定义的时候可以同时初始化,没有初始化或赋值的指针是不能访问的,比如你程序中的pmax和pmin
3 第二个for语句有问题,无限循环,既然用i做增量,又为何要p++?
4 保持良好的编码风格,一行代码只做一件事
修改如下
#include
void main()
{
int a[10] ;
int i = 0 ;
int *p = a ;
int *pmax = a ;
int *pmin = a ;
for(i = 0; i < 10; i++)
scanf("%d", p++);
p = a ;
for(i=0; i<10; p++, i++)
{
if(*pmax < *p)
pmax = p ;
if(*pmin > *p)
pmin = p ;
}
printf("%d\t%d\n", pmax, pmin);
getchar();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯