C语言,用选择法对数组中10个整数按由小到大排序?恳请解剖!!

#include<stdio.h>
int main()
{
void sort(int arry[],int n);
int a[10],i;
printf("enter array:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("the sorted array:\n");
for(i=0;i<10;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-1;i++)
{
k=i;

for(j=i+1;j<n;j++)

if(array[j]<array[k])

k=j;

t=array[k];array[k]=array[i];array[i]=t;
}
}

选择排序的思想是:每一趟的排序过程都是在当前位置后面剩下的待排序对象中选出值最小的那个,然后放到当前位置上。
该程序中k的定义主要是为了存放数组中最小数的位置。然后通过t=array[k];array[k]=array[i];array[i]=t;这三条语句,再把这数组中最小的数字放到前面。注意C语言当中的“=”不是等于,只是一种赋值运算。其中if(array[j]<array[k]) k=j;这条语句用来比较当前位置的值和初始值(即array[0]的值)的大小的。注意上述语句中第二个for循环的循环体语句只有一条,即:if(array[j]<array[k]) k=j;自己试着分析一下就明白了。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜