选择排序法
本帖最后由 欧比 于 2020-11-21 09:57 编辑# include <stdio.h>
# define N 8
int main()
{
int a;
int max,i,j,tem;
printf ("请输入8个数字:\n");
for(i=0;i<N;i++)
{
printf("a[%d]=",i) ;
scanf("%d",&a);
}
printf("\n");
printf("8个数字无排序输出为:\n");
for(i=0;i<N;i++)
{
printf("%5d",a);
}
printf("\n");
for(i=0;i<N-1;i++)
{
max=i;
for(j=i+1;j<N;j++)
{
if(a<a)
max=j;
if(max!=i)
{
tem=a;
a=a;
a=tem;
}
}
}
printf("从大到小输出:\n");
for(i=0;i<N;i++)
printf("%5d",a);
printf("\n");
return 0;
}
为什么最后三个数有失误 排序部分代码有错误
for(i=0;i<N-1;i++)
{
max=i;
for(j=i+1;j<N;j++)
{
if(a<a)
max=j;
if(max!=i)
{
tem=a;
a=a;
a=tem;
}
}
}
修改为
for(i = 0 ; i < N - 1 ; i ++) {
for(j = i + 1 ; j < N ; j ++) {
if(a < a) {
tem = a;
a = a ;
a = tem;
}
}
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
请输入8个数字:
a=6
a=35
a=234
a=45
a=88
a=975
a=21
a=8
8个数字无排序输出为:
6 35234 45 88975 21 8
从大到小输出:
975234 88 45 35 21 8 6
D:\00.Excise\C>
页:
[1]