今天我们来讲讲选择排序法这个算法
题目:用选择排序法对n个整型数据进行从小到大的排序。
先上代码。
#include <stdio.h>#define n 10void main(){int r[10];int i,j,t;printf("Please input datas:\n");for(j=0;j<n;j++)scanf("%d",&r[j]);for(i=0;i<n-1;i++){for(j=i+1;j<n;j++)if(r[i]>r[j]){t=r[i];r[i]=r[j];r[j]=t;}}for(i=0;i<n;i++)printf("%5d",r[i]);}
选择排序法主要就是以下这一串核心代码
for(i=0;i<n-1;i++) //这是第一层循环
{
for(j=i+1;j<n;j++) //这是第二层循环
if(r[i]>r[j])
{
t=r[i];r[i]=r[j];r[j]=t;
}
}
这个算法的分析是这样的:第一依次排序将n个元素中的最小值一到数组的第一个元素位置,第二次排序将剩下n-1个元素中的最小值一到数组的第二个元素,位置以此类推,经过n-1次排序,全部排好。(还是需要自己去仔细看,我只能提供代码和整体思路)
两层循环的作用就是将第i个数与i后面的进行比较如果符合if条件表达式的条件的话就交换,实现代码的作用。
在这里提醒大家,一定要多看算法,这样处理就不会慌,考试加油!!!
多多重复,百炼成钢!!!
如果觉得《每日C语言代码(The sixth day)——选择排序法》对你有帮助,请点赞、收藏,并留下你的观点哦!