用选择法对10个整数排序(C语言)
题目要求:如标题
思路:
- 首先令i从0~8遍历,设置最小数的下标min=i
- 然后对于i后面的数进行j遍历,如果a[min]>a[j],则令min=j
- 如果min!=i,则把a[min]和a[i]互换
- 最终打印出10个数字即可
以下为具体代码:
#include <stdio.h>
int main()
{
int a[10];
int i,j,t,min;
printf("Input 10 numbers: ");
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<=8;i++)
{
min=i;
for(j=i+1;j<=9;j++)
{
if(a[min]>a[j])
min=j;
}
if(min!=i)
{
t=a[min];
a[min]=a[i];
a[i]=t;
}
}
printf("The sorted numbers: ");
for(i=0;i<=9;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
函数方法:
#include <stdio.h>
int main()
{
void sort(int array[], int n);
int a[10],i;
printf("enter array: ");
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("The sorted array: ");
for(i=0;i<=9;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void sort(int array[], int n)
{
int i,j,k,t;
for(i=0;i<=n-2;i++)
{
k=i;
for(j=i+1;j<=n-1;j++)
if(array[j]<array[k])
k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
}