| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:看”选择法“看了半天也没看明白,请高手解答
只看楼主 加入收藏
taoboss
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-10-16
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:6 
看”选择法“看了半天也没看明白,请高手解答
void sort(int array[],int n)
  {
    int i,j,k,t;
    for(i=0;i<n-1;i++)
      {
       k=i
       for(j=i+1;j<n;j++)
         if(array[i]<array[k])
           k=j;
         t=array[k];array[k]=array[i];array[i]=t ;

      }

请高手把每一步骤告知小弟好吗?十分感谢!
搜索更多相关主题的帖子: 选择 解答 
2009-10-17 16:14
zodiac207
Rank: 2
等 级:论坛游民
帖 子:16
专家分:38
注 册:2009-10-14
收藏
得分:0 

void sort(int array[],int n) //传入的是一个数组.
  {
    int i,j,k,t;
    for(i=0;i<n-1;i++)
      {
       k=i
       for(j=i+1;j<n;j++) //取第i个数,再与第i位后面的数作比较,将最大的赋给第i位的数.然后再一次循环,将i+1再进行以上步骤
         if(array[i]<array[k])
           k=j;
         t=array[k];array[k]=array[i];array[i]=t ;
 
      }
2009-10-17 16:47
冰蓝诱惑
Rank: 2
等 级:论坛游民
帖 子:14
专家分:22
注 册:2009-10-16
收藏
得分:15 
呃...我在楼上的基础上再补充一些...希望楼上不要介意...
我也刚学不久  还望多指教...



void sort(int array[],int n) //传入的是一个数组.
  {  
    int i,j,k,t;  
    for(i=0;i<n-1;i++)  
      {  
       k=i               //这个是用变量K记住i的位置
       for(j=i+1;j<n;j++) //取第i个数,再与第i位后面的数作比较,将最大的赋给第i位的数.然后再一次循环,将i+1再进行以上步骤
         if(array[i]<array[k])  
           k=j;            //这个是记住j的位置
         t=array[k];array[k]=array[i];array[i]=t ; // k和i调换位置
 
      }  
2009-10-17 21:07
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
void sort(int array[],int n)
  {
    int i,j,k,t;
    for(i=0;i<n-1;i++)
      {
       k=i
       for(j=i+1;j<n;j++)
         if(array[i]<array[j]) //这里应该是a[j]吧,要不然k=i,k有没有随着循环而递增。
           k=j;  //这里是用k记录较大元素的位置
         t=array[j];array[j]=array[i];array[i]=t ;
 
      }
2009-10-17 21:14
jack_jones
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-6-25
收藏
得分:0 
回复 4楼 m456m654
k记录的不是最大的而是较大的元素位置,有什么用处?
2009-10-17 21:36
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
回复 5楼 jack_jones
等他循环完一遍后,较大元素的位置就成了最大元素的位置,这样可以通过k的值知道原数列中第几个数最大。
2009-10-17 22:00
yutianshangu
Rank: 2
等 级:论坛游民
帖 子:25
专家分:73
注 册:2008-10-12
收藏
得分:0 
回复 4楼 m456m654
void sort(int array[],int n)
  {
    int i,j,k,t;
    for(i=0;i<n-1;i++)
      {
       k=i
       for(j=i+1;j<n;j++)
         if(array[k]<array[j]) //这里应该是a[j]吧,要不然k=i,k有没有随着循环而递增。
           k=j;  //这里是用k记录较大元素的位置
         t=array[j];array[j]=array[i];array[i]=t ;

      }
2009-10-17 23:21
快速回复:看”选择法“看了半天也没看明白,请高手解答
数据加载中...
 
   



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

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