|
![]() | 作者: void [void]
![]() |
登录 |
void main() { int i,j,p,q,s,a[10]; printf("\n input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++){ p=i;q=a[i]; for(j=i+1;j<10;j++) if(q<a[j]) { p=j;q=a[j]; } if(i!=p) {s=a[i]; a[i]=a[p]; a[p]=s; } printf("%d",a[i]); } 那位老手可以帮我每行解释一下,谢谢! |
地主 发表时间: 05-10-09 17:42 |
![]() | 回复: windflower [windflower] ![]() |
登录 |
每行都要解释下吗? 那你自己还要不要动脑筋? 这是一个排序程序,但我忘记是叫交换排序还是选择排序。 从第一个元素开始,和它后面的每一个元素比较大小,如果后面的大,则记住大的元素的位置和值,再用这个大的与后面的继续比较直到在10个数中找到最大的那个,然后把它和数组第一个元素交换。 这样,外循环每一次都找到后面未排序中的最大元素,插入前面己排序的后面 结束后,就从大到小成有序数组。 |
B1层 发表时间: 05-10-09 18:58 |
![]() | 回复: zhoen889 [zhoen889] ![]() |
登录 |
是选择排序,楼上解释的很清楚! |
B2层 发表时间: 05-10-09 22:20 |
![]() | 回复: void [void] ![]() |
登录 |
我了该了~~ 哈~![]() |
B3层 发表时间: 05-10-11 19:41 |
![]() | 回复: qwhacker [qwhacker] ![]() |
登录 |
这是选择法排序,一般得c教材上还会介绍一种方法:冒泡法,不过比较繁琐,效率低。 |
B4层 发表时间: 05-10-24 22:09 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号