選擇排序法程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void printfArray(inta[],int num)
{
inti=0;
for(i=0;i<num;i++ )
{
printf("%d ",a[i]);
}
}
//選擇排序
//外層循環 當i=0時,讓j從 1—N進行變化
//外層循環 當i=1時,讓j從 2—N進行變化
//外層循環 當i=2時,讓j從 3—N進行變化
//....N=7時
//外層循環 當i=5時,讓j從 6—N進行變化
//結論:按照一個變量i不變,讓另一個變量j進行變化,下一輪依次進行
voidsortArray( int a[],int num ) //從小到大排序
{
inti,j,temp;
for( i=0;i<num-1;i++) //外層循環
{
for( j=i+1;j<num;j++) //內層循環:a[i]和a[j]比較大小,把小的放前面
{
if( a[i]>a[j]) //把小的放到前面
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
//排序
void main()
{
inti=0,j=0;
inttemp=0,num=0;
inta[]={33,654,4,455,6,33,4};
num=sizeof(a)/sizeof(a[0]);
printf("排序前:");
printfArray(a,num);
printf("\n");
sortArray(a,num);
printf("排序後:");
printfArray(a,num);
printf("\n");
system("pause");
return;
}
Some Tips:
1、數組做函數參數,會退化爲一個指針
2、把數組的內存首地址以及數組長度作爲函數參數即可。
3、實參的a和形參的a的數據類型本質不一樣
4、形參中的數組,編譯器會把它優化爲指針(C語言特色),指針類型爲其定義的數據類型,決定了爲其分配的內存空間大小。
5、形參寫在函數聲明括號內,和寫在函數體內是一樣的,只不過具有對外屬性而已。