| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1240 人关注过本帖
标题:选择排序法中的一个疑问
取消只看楼主 加入收藏
LinkedOut
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
选择排序法中的一个疑问
  void SelectionSort(int arr[ ],int n)
{
      int  i,j,k,t ;
      
      for(i=0;i<n-1;i++) {
              k =i;
             for(j=i+1;j<n;j++)
                    if(arr[j]<arr[k])
                        k=j;
                        t=arr[k];
                        arr[k]=arr[i];
                       arr[i]=t;
         }
}
       我的疑问是:以第一次外循环为例,arr[k]中k的值始终都是0吗?

[此贴子已经被作者于2016-7-22 19:23编辑过]

2016-07-22 18:38
LinkedOut
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-22
收藏
得分:0 
顺便把源程序贴出来
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-07-22 18:50
LinkedOut
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-22
收藏
得分:0 
你来具体说说它的原理@linlulu001

[此贴子已经被作者于2016-7-22 19:04编辑过]

2016-07-22 19:01
LinkedOut
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-22
收藏
得分:0 
回复 2楼 LinkedOut
你能具体说说它的原理吗
2016-07-22 19:02
LinkedOut
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-22
收藏
得分:0 
我是指arr[0]的值应该分别与arr[1],arr[2]......arr[n-1]的值比较大小,在第一次外循环时,而k=j改变了k的值,如果输入一组没有大小顺序的数据。
  @linlulu001输入时犯了小糊涂,我现在不是代码抄错的问题

[此贴子已经被作者于2016-7-22 19:21编辑过]

2016-07-22 19:17
LinkedOut
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-22
收藏
得分:0 
你一直强调我抄错代码并没有什么意思,反而是关于这段程序你还没说到运作原理
2016-07-22 19:35
LinkedOut
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-22
收藏
得分:0 
回复 8楼 晓益
每个回合比较完后,arr[i]是最小值,例如输入10   14  6   18  20,那么第一个回合就是arr[0]的值和后面四个数组元素的值依次比较大小,每比一次如果满足if语句就把值交换到arr[0],再看看我的问题吧

[此贴子已经被作者于2016-7-22 20:21编辑过]

2016-07-22 20:15
LinkedOut
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-22
收藏
得分:0 
这些注释全都废话,原因还是在于if只执行分号结束前的一条语句,后三句if无法起作用。for也一样,打上{}就能作用到多条语句。要是这么说就不必浪费这么多口水。而,我说的「比完一次大小交换一次值」由此看来是选择排序法的另一种方法,原先我以为这段代码用的就是这种方法,这也就是我为什么会提出这个问题,
程序代码:
 void SelectionSort(int arr[ ],int n)
{ 
      int  i,j,temp;
      
      for(i=0;i<n-1;i++) {
             for(j=i+1;j<n;j++)
                    if(arr[j]<arr[i]) {
                        temp=arr[i];
                        arr[i]=arr[j];
                        arr[j]=temp;
                     }
         }
}
       


[此贴子已经被作者于2016-7-23 07:39编辑过]

2016-07-23 07:24
LinkedOut
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-22
收藏
得分:0 
至此感谢大家的关注,至此疑问已经烟消云散
2016-07-23 07:27
快速回复:选择排序法中的一个疑问
数据加载中...
 
   



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

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