2024-06-06 08:46:50
#include<
void main()
{
int a[15],i,j,temp;
printf("Input 15 numbers:\n");
for(i=0;i<15;i++)
scanf("%d",&a[i]);
for(i=0;i<14;i++)//冒泡排序
for(j=0;j<14-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<15;i++)
printf("%d ",a[i]);
printf("\n");
}
我疑惑的就是你和楼上不同
你的是
for(i=0;i<14;i++)//冒泡排序
for(j=0;j<14-i;j++)
而楼上的是
for(i=0;i<15;i++)
{
for(j=i+1;j<15;j++)
到底哪个是的啊?????
冒泡排序中,如果有15个数据参与排序,实际上我们只需要进行14次排序,每次排序都把一个数据归位,每次都确定一个数据的位置,确定14个数据的位置后,最后一个数据的位置同时也确定了。所以,外部的for循环应该是for(i=0;i<14;i++),如果你让i小于一个比14大的数,也是可行的,不过没有一点意义。
冒泡排序,进行从小打到的排序,第i次排序,我们把第i大的数据归位到a[14-i],i从0开始变化到14。所以对于已经归位的数据,我们不需要再以后的排序中比较,所以嵌套的循环是for(j=0;j<14-i;j++)。
建议找个冒泡排序的专题看看
2024-06-06 06:46:01
2024-06-06 04:21:57
我疑惑的就是你和楼下不同
楼下的是
for(i=0;i<14;i++)//冒泡排序
for(j=0;j<14-i;j++)
而你的是
for(i=0;i<15;i++)
{
for(j=i+1;j<15;j++)
到底哪个是的啊??
都可以啊,这个冒泡排序有两种方法。我看楼下用了一种,我就选择了另一种,都可以的。没有错的。
2024-06-06 00:54:22