排序方法有很多種,選擇排序算法是其中比較容易實現的一個。
編程環境:win7,c-free,爲保證代碼可以無需改動在linux下編譯,未使用windows下的system("pause")之類,下面是代碼:
#include <stdio.h>
//選擇排序
void choosesort(int s[],int n)//n:待排序的元素數量,元素由s[0]開始
{
int i,j,k,m;
for(i=0;i<n-1;i++)//循環(n-1)次查找n-1個最小值
{
k=i;//將a[i]的索引i賦值給k
for(j=i+1;j<n;j++)//循環(n-1-i)次循環找到a[i]到a[n-1]的最小值
{
if(s[j]<s[k])
k=j;//將最小值的索引賦值給k
}
if(k!=i)//若k改變,將s[i]和s[k]作交換
{
m=s[i];
s[i]=s[k];
s[k]=m;
}
}
}
int main(int argc, char *argv[])
{
int a[10];
int i;
printf("Input 10 numbers:\n");/*輸入原始數據*/
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
/*輸出排序前數據*/
printf("Before sorting:\n");
for(i=0;i<10;i++)
{
printf("%7d",a[i]);
}
printf("\n");
/*進行選擇排序*/
choosesort(a,10);
/*輸出排序後數據*/
printf("After sorting:\n");
for(i=0;i<10;i++)
{
printf("%7d",a[i]);
}
printf("\n");
return 0;
}