失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 十大算法 — 选择排序法【C语言代码诠释】

十大算法 — 选择排序法【C语言代码诠释】

时间:2019-03-12 17:47:29

相关推荐

十大算法 — 选择排序法【C语言代码诠释】

#include<stdio.h>#define N 7int main(int argc,char* argv[]){int i,j,x[N],min,temp;//i,j→用于循环和数组下标、min→标记最小值,temp→交换两数的中间变量printf("请输入7个数字:\n");for(i=0;i<N;i++)scanf("%d",&x[i]);for(i=0;i<N-1;i++)//控制趟次{min=i;/*假设初始下标i就为最小值,那么下面一层的循环应从下一个数与它就行比较,而不应该再是自己比自己那样是毫无意义的,∴ j=i+1*/for(j=i+1;j<N;j++){/*放入到全部数据里面去比大小,当比完第一趟以后第一个数就一定是这个数组中的最大或者最小值,此时就无需再关顾第一个数而应该是继续排序剩下来的所有数字,∴ j<N*///如果有比min这个下标数组的值还要小的数,就标记住这个数,继续参与比较,这么下来,min标记的一定是最小值if(x[min]>x[j])min=j;}if(min!=i)/*说不定这个数从一开始就是一个有序的数,所以,判断如果min的下标从未发生过改变,那么说明这个数排序后就肯定还是在原来的位置,那么此时无需再交换两数,保持这个位置就好*/{temp=x[min];x[min]=x[i];x[i]=temp;}}printf("按从小到大排序为:\n");for(i=0;i<N;i++)printf("%d ",x[i]);printf("\n");return 0;}

如果觉得《十大算法 — 选择排序法【C语言代码诠释】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。