| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1298 人关注过本帖
标题:呜呜!!!人要崩溃了
只看楼主 加入收藏
yuyangtian10
Rank: 1
等 级:新手上路
帖 子:91
专家分:0
注 册:2007-4-5
收藏
得分:0 
#include "stdio.h"
#define N 4
main()
{
     int i,j,k,temp;
     int a[N];

     for (i=0;i<N;i++)
          scanf("%d",&a[i]);
     for (i=0;i<N-1;i++)
     {
          k=i;
          for(j=i+1;j<N;j++)
          {
          if(a[k]>a[j])
          k=j;
          }
          temp=a[i];
          a[i]=a[k];
          a[k]=temp;

          printf("a[i]=%d\n",a[i]);
          printf("a[k]=%d\n",a[k]);

       }
for(i=0;i<N;i++)
{
    if(i%10==0)
    printf("\n");
    printf("%5d",a[i]);
 }
 getch();
 }

我给大家模拟试着运行一下吧.
如输入;
45   12    11    49   它们分别对应  a[0]   a[1]    a[2]    a[3]
首先i=0, k=i所以
就是a[0] > a[1]    对应  45比12     得k=j;         k=1
继续a[1]>   a[2]    对应  45比11     得k=j;         k=2
第二个for第一轮循环完成;然后到
temp=a[i]    a[i]=a[0]
a[i]=a[k]        a[k]=11
a[k]=temp
进行第一个for的第二次循环
i=1;k=i
.........................


a[k]=temp
还是没发现有什么用
2008-01-05 13:24
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
没用,怎么会没用,你把它注释看看

漫漫的理解(不能急噪)
2008-01-05 13:31
yuyangtian10
Rank: 1
等 级:新手上路
帖 子:91
专家分:0
注 册:2007-4-5
收藏
得分:0 
循环完一次后。第二个a[k]   是用a[k]=  45      还是用   k=i  i=2   ,a[k]=a[2]  呢??
2008-01-05 15:44
knaruto
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-1-9
收藏
得分:0 
temp=a[i];
          a[i]=a[k];
          a[k]=temp;  
这是用来把a[i]和a[k]的值交换的
2008-01-09 04:41
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
经典的选择排序啊~呵呵,你在草稿纸上面写写运行的顺序就知道了。要自己写,别人写了你看没有用。你试着不交换,看看会不会出问题~多研究是有好处滴~~

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-01-09 12:46
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
请把语言和算法分开看。
2008-01-09 12:49
快速回复:呜呜!!!人要崩溃了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014767 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved