c語(yǔ)言通過(guò)函數(shù)調(diào)用實(shí)現(xiàn)選擇排序法:
拜泉網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),拜泉網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為拜泉數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的拜泉做網(wǎng)站的公司定做!
1、寫(xiě)一個(gè)簡(jiǎn)單選擇排序法的函數(shù)名,包含參數(shù)。int SelectSort(int * ListData,int ListLength);
2、寫(xiě)兩個(gè)循環(huán),在循環(huán)中應(yīng)用簡(jiǎn)單選擇插入排序:
int SelectSort(int * ListData,int ListLength)
{
int i , j ;
int length = ListLength;
for(i=0;i=length-2;i++)
{
int k = i;
for(j=i+1;j=length-1;j++)
{
if(ListData[k]ListData[j])
{
k=j;
}
}
if(k!=i)
{
int tmp = ListData[i];
ListData[i] = ListData[k];
ListData[k] = tmp;
}
}
return 0;
}
3、對(duì)編好的程序進(jìn)行測(cè)試,得出測(cè)試結(jié)果:
int main()
{
int TestData[5] = {34,15,6,89,67};
int i = 0;
printf("排序之前的結(jié)果\n");
for(i = 0;i5;i++)
printf("|%d|",TestData[i]);
int retData = SelectSort(TestData,5);
printf("排序之后的結(jié)果:\n");
for(i = 0;i5;i++)
printf("|%d|",TestData[i]);
return 0;
}
4、簡(jiǎn)單選擇排序中,需要移動(dòng)的記錄次數(shù)比較少,主要的時(shí)間消耗在對(duì)于數(shù)據(jù)的比較次數(shù)?;旧?,在比較的時(shí)候,消耗的時(shí)間復(fù)雜度為:n*n。
#includestdio.h??
#includestdlib.h??
int?comp(const?void*a,const?void*b)//用來(lái)做比較的函數(shù)。??
{??
return?*(int*)a-*(int*)b;??
}??
int?main()??
{??
int?a[10]?=?{2,4,1,5,5,3,7,4,1,5};//亂序的數(shù)組。??
int?i;??
qsort(a,10,sizeof(int),comp);//調(diào)用qsort排序??
for(i=0;i10;i++)//輸出排序后的數(shù)組??
{??
printf("%d?",a[i]);??
}??
return?0;??
}
c語(yǔ)言和c++中,對(duì)于sort函數(shù)的使用,不同。c語(yǔ)言中沒(méi)有預(yù)置的sort函數(shù),如果在c語(yǔ)言中,要調(diào)用sort函數(shù),就需要自定義一個(gè)用于排序的函數(shù),或者使用c語(yǔ)言自有的qsort函數(shù),其頭文件為stdlib.h。
#includestdio.h
mian()
{
int f(int *pointer1,int *pointer2,int *pointer3); \\對(duì)要進(jìn)行調(diào)用的函數(shù)進(jìn)行聲明
int change(int *po1,int *po2);
int a,b,c,*p1,*p2,*p3; \\定義整形三個(gè)變量和三個(gè)指針變量。
scanf("%d %d %d",a,b,c);
p1=a; p2=b; p3=c;
f(*p1,*p2,*p3); \\調(diào)用函數(shù)f()
printf("排序后的三個(gè)數(shù)為:%d%d%d\n",a,b,c);
}
int f(int *pointer1,int *pointer2,int *pointer3)
{
if(*pointer1*pointer2) change(*pointer1,*pointer2);
if(*pointer1*pointer3) change(*pointer1,*pointer3);
if(*pointer2*pointer3) change(*pointer2,*pointer3);
}
int change(int *po1,int *po2)
{
int t;
t=*po1;
*po1=*po2;
*po2=t;
}