扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
#include
目前累计服务客户1000多家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供成都网站制作、网站建设、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。
stdio.h
void
Sort(
int
*s,
int
n
)
{
int
*p
=
s;
//定义一个指向数组首地址的指针
int
*q,
tmp;
for(
;
p
s+10;
p++
)
//当指针移动到数组的末端结束
{
for(
q
=
p
;
q
s+10;
q++
)
//按照插入排序的方式执行
{
if(
*q
*p
)
{
tmp
=
*p;
*p
=
*q;
*q
=
tmp;
}
}
}
}
int
main()
{
int
i;
int
s[10]
=
{9,8,7,6,5,4,3,2,1,0};
Sort(s,10);
//调用排序函数
for(
i
=
0;
i
10;
++i
)
//输出排序后的结果
{
printf("%d
",s[i]);
}
printf("\n");
return
0;
}
#includestdio.h
void input(int *p,int num)
{
// int a[10]; 不能在子函数中再定义了,要用形参对应的实参, 子函数中定义的是局部变量,函数完成时,变量就释放了。
// for(p=a;pa+10;p++)
int i;
for(i=0;inum;i++)
scanf("%d",p+i);
}
void sort(int *p,int num)
{
// int a[10]; 同前
int i,j,temp;
// for(p=a;pa+10;p++)
for(i=0;inum;i++) //数组下标从0开始
{
for(j=i+1;jnum;j++)
if(p[i]p[j])
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
}
void output(int *p,int num)
{
//int a[10]; 同前
// for(p=a;pa+10;p++)
int i;
for(i=0;inum;i++)
printf("%d ",*(p+i));
}
int main()
{
int a[10];
input(a,10);
sort(a,10);
output(a,10);
return 0;
}
你的程序没错,只不过这不是选择法,是冒泡发,选择发如下:
void sort(int *a,int n)
{
int i,j,t,temp;
for(i=0;in-1;i++)
{
t=i;/初始定义t为未排序数的第一个
for(j=i+1;jn;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;i10;i++)
scanf("%d",p++);
printf("\n");
p=a;
sort(p,10);
p=a;
printf("zhe sort array is:\n");
for(i=0;i10;i++)
printf("%d,",a[i]);
getch();
}
#includestdio.h
void Sort(int *a,int n) {
int *p,*q,*v,t;
for(p = a;p a + n - 1;++p) {
v = p;
for(q = p + 1; q a + n; ++q)
if(*v *q) v = q;
if(*p != *v) {
t = *p;
*p = *v;
*v = t;
}
}
}
void Show(int *a,int n) {
int i;
for(i = 0; i n; ++i)
printf("%d ",*(a + i));
printf("\n");
}
int main() {
int a[] = {23,12,54,89,66,59,57,48,91,20,31};
int n = sizeof(a)/sizeof(a[0]);
printf("排序前:\n");
Show(a,n);
printf("排序后:\n");
Sort(a,n);
Show(a,n);
return 0;
}
#include<stdio.h>
voidprint_result(float*,int);
voidSelect_Sort(float*,int);
intmain()
{
inti;
floatarray[10];
float*pointer;
printf("请输入10个数:\n");
for(i=0;i<10;i++)
{
scanf("%f",&array[i]);
}
pointer=array;
Select_Sort(pointer,10);
print_result(pointer,10);
return0;
}
voidprint_result(float*p,intn)
{//输出结果
intk;
for(k=0;k<n;k++)
{
printf("%g\t",*(p+k));
}
}
voidSelect_Sort(float*pt,intn)
{//全用指针的选择排序法
inti,j,k;
floattempnum;
for(i=0;i<n;i++){
k=i;
for(j=i+1;j<n;j++)
{
if(*(pt+j)>*(pt+i))
{
k=j;
}
}
tempnum=*(pt+i);
*(pt+i)=*(pt+k);
*(pt+k)=tempnum;
}
}
扩展资料:
其它方法:
voidSelectSort(intarr[],intn)
{
printf("\n选择排序法过程:\n");
inti,j,k,l,t;
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(arr[j]<arr[k])
{
k=j;
}
}
if(k!=i)
{
t=arr[i];arr[i]=arr[k];arr[k]=t;
}
for(l=0;l<n;l++)
{
printf("%3c",arr[l]);
}
printf("\n");
}
}
你的程序没错,只不过这不是选择法,是冒泡发,选择发如下:
void sort(int *a,int n)
{
int i,j,t,temp;
for(i=0;in-1;i++)
{
t=i;/初始定义t为未排序数的第一个
for(j=i+1;jn;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;i10;i++)
scanf("%d",p++);
printf("\n");
p=a;
sort(p,10);
p=a;
printf("zhe sort array is:\n");
for(i=0;i10;i++)
printf("%d,",a[i]);
getch();
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流