选择排序
1.输入n个整数,找到这批整数的最小值,将最小值和第1个数交换,最后输出这批整数。
相关知识:如何在数组一定范围内选择最小值输入格式:
第一行先给出非负整数n;
第二行给出n个整数。
输出格式:
第一行输出将最小值和第1个数交换后的n个整数。
#include <stdio.h>
#define N 100
int main ()
{
int n,min,i,t,a[N];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
min=a[0];
for(i=1;i<n;i++)
{
if(min>a[i])
min=a[i];
}
for(i=0;i<n;i++)
{
if(min==a[i])
{
t=a[i];
a[i]=a[0];
a[0]=t;
}
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
测试输入:
实际输出:
2.简单选择排序。对数组中的元素实现简单选择排序,并输出每一次排序后的结果。
简单选择排序算法思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
#include <stdio.h>
#define N 100
int main ()
{
int i,j,t,n,m,a[N];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{
t=i;
for(j=i+1;j<n;j++)
if(a[j]<a[t])
t=j;
if(i!=t)
{
m=a[i];
a[i]=a[t];
a[t]=m;
}
for(j=0;j<n;j++)
printf("%d ",a[j]);
printf("\n");
}
return 0;
}
测试输入:
实际输出: