用指向指针的方法对N个整数排序并输出
楼下的说的不错,但我们的是老师出的课程设计题目,我也看用冒泡排序即可,不必使用指针,但试卷要求如此,我也没有办法!...
楼下的说的不错,但我们的是老师出的课程设计题目,我也看用冒泡排序即可,不必使用指针,但试卷要求如此,我也没有办法!
展开
展开全部
选择
#include "stdio.h"
void sort(int x[],int n)
{
int t,i,j,k;
for(i=0;i<n-1;i++)
{
k=0;
for(j=0;j<n-1-i;j++)
if(x[k]<x[j+1])
k=j+1;
t=x[k];
x[k]=x[n-1-i];
x[n-1-i]=t;
}
}
void main()
{
int a[10],i,*p;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{
printf("%d ",*p);
p++;
}
}
冒泡
#include "stdio.h"
void sort(int x[],int n)
{
int i,j,p;
for(i=0;i<n;i++)
for(i=0;i<n;i++)
for(j=0;j<n-1-i;j++)
{
if(x[j]<x[j+1])
{
p=x[j];
x[j]=x[j+1];
x[j+1]=p;
}
}
}
void main()
{
int a[10],i,*p;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{
printf("%d ",*p);
p++;
}
}
#include "stdio.h"
void sort(int x[],int n)
{
int t,i,j,k;
for(i=0;i<n-1;i++)
{
k=0;
for(j=0;j<n-1-i;j++)
if(x[k]<x[j+1])
k=j+1;
t=x[k];
x[k]=x[n-1-i];
x[n-1-i]=t;
}
}
void main()
{
int a[10],i,*p;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{
printf("%d ",*p);
p++;
}
}
冒泡
#include "stdio.h"
void sort(int x[],int n)
{
int i,j,p;
for(i=0;i<n;i++)
for(i=0;i<n;i++)
for(j=0;j<n-1-i;j++)
{
if(x[j]<x[j+1])
{
p=x[j];
x[j]=x[j+1];
x[j+1]=p;
}
}
}
void main()
{
int a[10],i,*p;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{
printf("%d ",*p);
p++;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
找N个学生,每人分配一个数,然后让他们自己去按大小排队去,最快的并行算法!(也可能是最慢的,比串行算法还要慢!)
如果你还想再快一点,可以在操场上画上若干个格子,规定每个格子只能站哪个数值区间内的数。
或者像拍卖一样,你喊第一名出列,让他们自己竞争去,依次类推。
我这样跟你开玩笑,是因为你的题目描述存在很严重的问题,估计是你转述谬传,要不就是你在胡思乱想。
既然是对整数排序,何必用指针呢;就算想用指针也不必是二级指针啊!
如果你还想再快一点,可以在操场上画上若干个格子,规定每个格子只能站哪个数值区间内的数。
或者像拍卖一样,你喊第一名出列,让他们自己竞争去,依次类推。
我这样跟你开玩笑,是因为你的题目描述存在很严重的问题,估计是你转述谬传,要不就是你在胡思乱想。
既然是对整数排序,何必用指针呢;就算想用指针也不必是二级指针啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在sort里面有一点小错误,估计是粗心了。改了就能够正确的排序了。
void
sort(int
**p,int
n)
{int
i,j,*t;
for(i=0;i<n-1;i++)
{for(j=i+1;j<n;j++)
{if(**(p+i)>**(p+j))
{t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
//
这儿是*(p+j)
,不是*(p+i)呢,
}
}
}
}
void
sort(int
**p,int
n)
{int
i,j,*t;
for(i=0;i<n-1;i++)
{for(j=i+1;j<n;j++)
{if(**(p+i)>**(p+j))
{t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
//
这儿是*(p+j)
,不是*(p+i)呢,
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询