| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 424 人关注过本帖
标题:关于选择排序法问疑
只看楼主 加入收藏
skysky198344
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-10-27
收藏
 问题点数:0 回复次数:3 
关于选择排序法问疑
下面是我看到的一段程序,是关于选择排序法的,
#include "stdio.h"
main()
{
   int n, i, k, x, min, min_k, a[100];
   printf( "please input your number:\n" );
   scanf("%d", &n );
   printf( "please input yout numbers:\n" );
   for( i = 0; i < n; i++ )
   scanf("%d", &a[i]);
   for( k = 0;k < n-1; k++ )
   {
      min = a[k];
      min_k = k;
      for( i = k; i < n; i++ )
      if( a[i] < min )
      {
         min = a[i];
         min_k = i;
       }
    x = a[min_k];
    a[min_k] = a[k];
    a[k] = x;
    }
    for( i = 0; i < n; i++ )
        printf("%d ", a[i] );
    printf( "\n" );     
}
其中我不懂之处就是:k是代表排序的步数呢?还是脚标呢?然后k取这个循环是什么意思,我总感觉这个程序还可以写简单点的。
我对数组操作很不熟悉,希望大家给予指点。
搜索更多相关主题的帖子: chosen_sorted_method 
2008-10-28 16:46
wkl000
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-10-17
收藏
得分:0 
这是一个选择排序法。
这里边的参量min, min_k纯粹是多余的,

   for( k = 0;k < n-1; k++ )
   {
      min = a[k];
      min_k = k;
      for( i = k; i < n; i++ )
      if( a[i] < min )
      {
         min = a[i];
         min_k = i;
       }
    x = a[min_k];
    a[min_k] = a[k];
    a[k] = x;
    }

上边的代码可以简化成:
for(K=0;k<n;k++)
   for(i=k+1;i<n;i++)
  if(a[k]>a[i])
    x=a[k];
    a[k]=a[i];
    a[i]=x;

其实上边的代码还可以优化,具体请参见谭浩强编写的C
2008-10-28 17:03
ztj20080808
Rank: 1
等 级:新手上路
威 望:1
帖 子:36
专家分:0
注 册:2008-10-27
收藏
得分:0 
回复 2# 的帖子
for(K=0;k<n;k++)
   for(i=k+1;i<n;i++)
  if(a[k]>a[i])
  {  x=a[k];
    a[k]=a[i];
    a[i]=x;
   }
应该加个括号吧
2008-10-28 17:38
skysky198344
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-10-27
收藏
得分:0 
very good ,thanks a lot .
2008-10-29 09:46
快速回复:关于选择排序法问疑
数据加载中...
 
   



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

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