#include
目前累計服務客戶1000多家,積累了豐富的產(chǎn)品開發(fā)及服務經(jīng)驗。以網(wǎng)站設計水平和技術(shù)實力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站制作、網(wǎng)站建設、網(wǎng)站策劃、網(wǎng)頁設計、網(wǎng)絡營銷、VI設計、網(wǎng)站改版、漏洞修補等服務。創(chuàng)新互聯(lián)始終以務實、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設計的研究、對客戶形象的視覺傳遞、對應用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。
stdio.h
void
Sort(
int
*s,
int
n
)
{
int
*p
=
s;
//定義一個指向數(shù)組首地址的指針
int
*q,
tmp;
for(
;
p
s+10;
p++
)
//當指針移動到數(shù)組的末端結(jié)束
{
for(
q
=
p
;
q
s+10;
q++
)
//按照插入排序的方式執(zhí)行
{
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);
//調(diào)用排序函數(shù)
for(
i
=
0;
i
10;
++i
)
//輸出排序后的結(jié)果
{
printf("%d
",s[i]);
}
printf("\n");
return
0;
}
#includestdio.h
void?input(int?*p,int?num)
{
// int?a[10];?不能在子函數(shù)中再定義了,要用形參對應的實參,?子函數(shù)中定義的是局部變量,函數(shù)完成時,變量就釋放了。
// 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++)?//數(shù)組下標從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;
}
你的程序沒錯,只不過這不是選擇法,是冒泡發(fā),選擇發(fā)如下:
void sort(int *a,int n)
{
int i,j,t,temp;
for(i=0;in-1;i++)
{
t=i;/初始定義t為未排序數(shù)的第一個
for(j=i+1;jn;j++)
{
if(*(a+t)*(a+j))/挑選出更大的數(shù)的位置,把他賦給t
t=j;
}
temp=*(a+i); /t是最大的那個數(shù)的位置,把他和未排序的第一個交換位置
*(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個數(shù):\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)
{//輸出結(jié)果
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?。絠)
{
t=arr[i];arr[i]=arr[k];arr[k]=t;
}
for(l=0;l<n;l++)
{
printf("%3c",arr[l]);
}
printf("\n");
}
}
你的程序沒錯,只不過這不是選擇法,是冒泡發(fā),選擇發(fā)如下:
void sort(int *a,int n)
{
int i,j,t,temp;
for(i=0;in-1;i++)
{
t=i;/初始定義t為未排序數(shù)的第一個
for(j=i+1;jn;j++)
{
if(*(a+t)*(a+j))/挑選出更大的數(shù)的位置,把他賦給t
t=j;
}
temp=*(a+i); /t是最大的那個數(shù)的位置,把他和未排序的第一個交換位置
*(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();
}