选择排序法
我们先用三个数放入a, b, c,变量中排序简单来探究选择排序法思想。第一轮先将a和b比较,较大数放入a中,再将a和c比较大的数放入a中;
比如
a=6; b=7;c=8;
第一轮确定第一位
第一次比较
a=7;b=6;c=8;
第二次比较
a=8;b=6;c=7;
第二轮后确定第二位
第一次比较
a=8;b=7;c=6;经过三次比较终于排序好了。
这次将 77 45 26 89 9五个数从小到大排列;
第一轮确定第一位
77 45 26 86 9 原始数据
77 45 26 86 9 77和45比较,45比77小,互换位置
45 77 26 86 9 45和26比较,26比45小,互换位置
26 77 45 86 9 26和86比较,86比26大,不变位置
26 77 45 86 9 26和9比较, 9比26小,互换位置
9 77 45 86 26 第一轮结果确定第一位数;
第二论排序后 9 26 77 86 45
第三论排序后 9 26 45 86 77
第四论排序后 9 26 45 77 86 已经排好不需要继续;
代码实现
#include<stdio.h>
int main()
{
int a[5],i,t,j;
for(i=0;i<5;i++)//输入五个数
scanf("%d",&a[i]);
for(i=1;i<=4;i++)//对于五个数只需4轮确定前四位
{
for(j=i+1;j<5;j++)//a[i]需要和a[i+1]比较
{
if(a[i]>a[j])//从小到大
{
t=a[i];//交换位置
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<5;i++)
printf("%d\t",a[i]);//输出排序
return 0;
}
选择排序已经完了,还有一种冒泡排序和这差不多。选择排序是位置从前面确定过来。而冒泡排序位置是从后面确定到前面。