C语言编程题,数组a中有15个元素,键盘输入,并冒泡法有小到大排序

是这样的,想请问下,C语言编程题,数组a中有15个元素,键盘输入,并冒泡法有小到大排序
最新回答
手指的烟

2024-06-06 08:46:50

#include<

stdio.h
>

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

#include <stdio.h>
void main()
{
int a[15];
int t,i,j;
printf("Please Input 15 numbers:");
printf("\n");
for(i=0;i<15;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<14;i++) //让i-1个大数 “沉底”
for(j=0;j<14-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
printf("Sorted array as below:\n");
for(i=0;i<15;i++)
printf("%d ",a[i]);
}

-----祝你好运!!

基本思想:
从第一个元素开始,对数组中的两两相邻元素进行比较,将数值小的元素放在前面,一轮比较完毕,一个最大的数沉底 -- 成为数组中的最后的一个元素,一些小的数如同气泡一样上浮一个位置,经过多轮比较完成排序

5分 也不好得啊~~
国产祖宗

2024-06-06 04:21:57

#include<stdio.h>
void sort(int a[])
{
int i,j;
int temp;
for(i=0;i<15;i++)
{
for(j=i+1;j<15;j++)
{
if(a[j]<a[i])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
int main()
{
int a[16];
int i;
printf("请输入你要输入的数:\n");
for(i=0;i<15;i++)
{
scanf("%d",&a[i]);
}

sort(a);

printf("由小到大排序为:\n");
for(i=0;i<15;i++)
{
printf("%d\n",a[i]);
}

return 0;
}
追问
我疑惑的就是你和楼下不同
楼下的是
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

#include<stdio.h>
void main()
{
int a[15],i,n,temp;
for(i=0;i<15;i++)
scanf("%d",&a[i])
for(i=0;i<15;i++)
{
for(n=i+1;n<15;n++)
if(a[i]<a[n])
{
temp=a[i];
a[i]=a[n];
a[n]=temp;
}
}
for(i=0;i<15;i++)
prntf("%d\t",a[i])
}