| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2202 人关注过本帖
标题:选择排序法
只看楼主 加入收藏
abcc
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-1-22
收藏
 问题点数:0 回复次数:14 
选择排序法
sort(int x[],int n)
{
   int i,j,k,t;
   for(i=0;i<n-1;i++)
     {k=i;
       for(j=j+1;j<n;j++)
        if(x[j]>x[k])  k=j;
        if(k!=i)   /*这是一个用选择排序的函数但这行是什么意思?*/
          {t=x[i];x[i]=x[k];x[k]=t;}
       }
}
搜索更多相关主题的帖子: 选择 
2005-04-13 10:33
musicml
Rank: 1
等 级:新手上路
帖 子:273
专家分:0
注 册:2005-4-2
收藏
得分:0 

首先要确定这个排序算法所得排序结果的顺序:这个算法的最终结果是从大到小排列。 所以if(k!=i){...}的意思是如果后面的数有比x[i]大,就把它交换过来。 可以编程如下测试结果: #include <stdio.h>

void sort(int x[],int n) { int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(x[j]>x[k]) k=j; if(k!=i) /*这是一个用选择排序的函数但这行是什么意思?*/ { t=x[i]; x[i]=x[k]; x[k]=t; } } }

void main() { int x[10]; int count; int counter;

for(count=0;count<10;count++) { counter=count+1; printf("The %dth number:\t",counter); scanf("%d",&x[count]); fflush(stdin); } sort(&x[0],10);

for(count=0;count<10;count++) { printf("%5d",x[count]); } printf("\n");

}


Every thing is possible.
2005-04-13 12:40
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
以下是引用abcc在2005-4-13 10:33:01的发言: sort(int x[],int n) { int i,j,k,t; for(i=0;i<n-1;i++) {k=i; for(j=j+1;j<n;j++) if(x[j]>x[k]) k=j; if(k!=i) /*这是一个用选择排序的函数但这行是什么意思?*/ {t=x[i];x[i]=x[k];x[k]=t;} } }
意思即为该数不是本身,如果本身的话就没必要换了!

2005-04-13 16:34
abcc
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-1-22
收藏
得分:0 
空前老师:
       如果本身的话就没必要换了!对这句话你能举个例子吗?我的意思是说输入哪几个数时会遇到这种情况.
2005-04-13 17:15
poppylx
Rank: 1
等 级:新手上路
帖 子:367
专家分:0
注 册:2004-9-27
收藏
得分:0 
空前老师  
     我也有个问题耶  for(j=j+1;j&lt;n;j++)   没有问题吗???

动于心而静如水
2005-04-13 18:57
poppylx
Rank: 1
等 级:新手上路
帖 子:367
专家分:0
注 册:2004-9-27
收藏
得分:0 
1 2 3
x[0]=1;
循环开始       i 初始化0;
k=i;            k 被赋值 0;
在次循环    没有x [ j ] &gt; x [ k ]             k 仍为 0
这样在 i f 中  i 等于 k    即 不用交换

动于心而静如水
2005-04-13 19:15
kenwuchan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-3-31
收藏
得分:0 
j=i+1才是!

自己最大就不用交换了!

[此贴子已经被作者于2005-4-13 19:46:30编辑过]


2005-04-13 19:40
alexanderxyh
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2004-10-18
收藏
得分:0 
2 楼的说错了2 个地方,都是致命错误
白打了。。
2005-04-13 22:51
kaifeng05
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2005-5-11
收藏
得分:0 
不就是K的阶层是多少吗?

学.....佛......有恒
2005-05-17 00:18
musicml
Rank: 1
等 级:新手上路
帖 子:273
专家分:0
注 册:2005-4-2
收藏
得分:0 
以下是引用alexanderxyh在2005-4-13 22:51:09的发言: 2 楼的说错了2 个地方,都是致命错误 白打了。。
我到没看出哪里说错了!请指出 哎~~ 不知道是我说错了 还是你真不知~~~

Every thing is possible.
2005-05-17 00:51
快速回复:选择排序法
数据加载中...
 
   



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

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