5、选择排序(升序)
思路:N个数,每次从剩下的数中选择最小的数(记住它的下标)与这组数中最前面的数交换
,数的个数依次减少。一趟排序完成后最前面的数最小。共进行N-1趟排序。
完整程序
#include<stdio.h>
#define N 10
int main()
{
int num[N];
int i,j,k;
int t;
for(i=0;i<N;i++)
scanf("%d",&num[i]);
for(i=0;i<N-1;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(num[k]>num[j]) k=j;
if(k!=i) {t=num[k];num[k]=num[i];num[i]=t;}
}
for(i=0;i<N;i++)
printf("%d ",num[i]);
return 0;
}
封装函数
void xuanze(int num[N])
{
int i,j,k;
int t;
for(i=0;i<N-1;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(num[k]>num[j]) k=j;
if(k!=i) {t=num[k];num[k]=num[i];num[i]=t;}
}
}
调用函数
#include<stdio.h>
#define N 10
int main()
{
int num[N];
int i,j,k;
int t;
void xuanze(int num[N]);
for(i=0;i<N;i++)
scanf("%d",&num[i]);
xuanze(num);
for(i=0;i<N;i++)
printf("%d ",num[i]);
return 0;
}