69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[10];
int b,i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=10;i>1;i--)
{
if(a[i]<a[i-1])
{
b=a[i];
a[i]=a[i-1];
a[i-1]=b;
}
}
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
system("pause");
return 0;
}
大佬,虽然一个是一重循环,一个是二重循环,但是这两个循环都是将每一个元素和下个元素比较并交换的啊,为什么效果上就不一样呢
[quote=引用 3 楼 zyx6680599 的回复:]
[quote=引用 1 楼 自信男孩 的回复:]
选择排序应该是双层循环呢,看你的代码是一层循环,那么只能对数组做一次排序,找到最大值或者最小值并放到对应的位置。
for(i=0;i<8;i++)
for(j=1;j<9;j++)
if(a[i]<a[j])
b=a[i];a[i]=a[j];a[j]=b;
for(i=0;i<8;i++)
for(j=1;j<9;j++)
if(a[i]<a[j]) {
b=a[i];a[i]=a[j];a[j]=b;
}
[/quote][quote=引用 1 楼 自信男孩 的回复:]
选择排序应该是双层循环呢,看你的代码是一层循环,那么只能对数组做一次排序,找到最大值或者最小值并放到对应的位置。
for(i=0;i<8;i++)
for(j=1;j<9;j++)
if(a[i]<a[j])
b=a[i];a[i]=a[j];a[j]=b;
for(i=0;i<8;i++)
for(j=1;j<9;j++)
if(a[i]<a[j]) {
b=a[i];a[i]=a[j];a[j]=b;
}
选择排序应该是双层循环呢,看你的代码是一层循环,那么只能对数组做一次排序,找到最大值或者最小值并放到对应的位置。