标题:选择法排序 修改一下
只看楼主
xkfrxh
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-6
 问题点数:0 回复次数:9 
选择法排序 修改一下
/*择排序法 从小到大排列十个数*/
#include<stdio.h>
void main()
{int a[10],i,j,min,temp;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
{
min=a[i-1];
for(j=i;j<10-i;j++)
if(min>a[j])
min=a[j];
temp=a[i-1];
a[i-1]=min;
a[j]=temp;
}
for(i=0;i<10;i++)
ptintf("%5d",a[i]);
}
搜索更多相关主题的帖子: void int 选择 main include 
2007-08-06 09:03
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
#include<stdio.h>
void main()
{int a[10],i,j,min,temp;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
{
min=i-1;
for(j=i;j<10;j++)
if(a[min]>a[j])
min=j;
temp=a[i-1];
a[i-1]=a[min];
a[min]=temp;
}
for(i=0;i<10;i++)
printf("%5d",a[i]);
}

Fight  to win  or  die...
2007-08-06 09:53
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
得分:0 
把a[0]设为哨兵,会更好吧,你这是冒泡排序吧

惟有学习不断的学习!
2007-08-06 10:25
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
以下是引用lishizelibin在2007-8-6 10:25:48的发言:
把a[0]设为哨兵,会更好吧,你这是冒泡排序吧

确实是选择排序,怎么总容易把冒泡和选择混淆呢?

//冒泡排序
#include <stdio.h>

#define SIZE 5

int main(){
int a[SIZE] = {1,5,9,3,6};
for (int i = 0;i < SIZE;++i)
for (int j = 1;j < SIZE-i;++j)
if (a[j] < a[j-1]){
int t = a[j-1];
a[j-1] = a[j];
a[j] = t;
}
for (i = 0;i < SIZE;++i)
printf("%5d",a[i]);
return 0;
}

[此贴子已经被作者于2007-8-6 11:05:08编辑过]


Fight  to win  or  die...
2007-08-06 10:51
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
得分:0 

不好意思,是选择排序,没注意看
还有快速排序也是,要没注意看,就说错了
我只学了他们,没怎么用,经常说错,但还知道怎么用的


惟有学习不断的学习!
2007-08-06 12:54
liulanghan
Rank: 1
等 级:禁止访问
帖 子:104
专家分:0
注 册:2007-5-5
得分:0 
用的地方多着呢,我以前把排序的方法写成函数,每次用的时候直接调用的,都不重新写了!~
2007-08-06 15:49
xieyuanchang
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-5
得分:0 
你的程序很有问题
/*择排序法 从小到大排列十个数*/
#include<stdio.h>
void main()
{int a[10],i,j,min,temp;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
{
min=a[i-1];
for(j=i;j<10;j++)//此处为什么减i?
if(min>a[j]){
min=a[j];
temp=a[i-1];
a[i-1]=min;
a[j]=temp;
}//此处少了对括号
}
for(i=0;i<10;i++)
ptintf("%5d",a[i]);
}
此外完全可以不用min

2007-08-06 15:49
xieyuanchang
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-5
得分:0 

此外完全可以不用min变量
我将其改为:
#include<stdio.h>
void main()
{int a[10],i,j,temp;
for(i=0;i<10;i++)
scanf("%d",&a[i]);

for(i=1;i<10;i++)
{
for(j=i;j<10;j++)
if(a[i-1]>a[j]){
temp=a[i-1];
a[i-1]=a[j];
a[j]=temp;
}
}

for(i=0;i<10;i++)
printf("%5d",a[i]);
}


2007-08-06 15:56
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
回复:(xieyuanchang)此外完全可以不用min变量我将其...
少定义了一个变量,多了很多次交换。得不尝失啊..

Fight  to win  or  die...
2007-08-06 16:25
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
得分:0 
回复:(liulanghan)用的地方多着呢,我以前把排序的...

现在还是学生,都学了,很少去用它,哎~~~~~~~~~
悲哉


惟有学习不断的学习!
2007-08-06 16:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-160589-1-1.html




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

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