高手看看,为什么冒泡排序排不起,错哪儿了

来源:百度知道 编辑:UC知道 时间:2024/07/16 04:18:57
main ()
{
int arr[10];
int i,j,temp,n;
printf("How many array:");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("input arr[%d]:",i); /* 说这句少了一个')',我看看没少呀 */
scanf("%d",&arr[i]);
}
printf("\n");

/* 冒泡排序 */
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;i++)
if (arr[j]>arr[j+1]) {temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}

/* 打印输出 */
for(i=0;i<n;i++)
printf("%5d",arr[i]);

/* 暂停 */
getch();
}

错哪儿,请说明下
谢谢,就改成 j++ 就可以了,我没看到,又是没检查

如果不改i=1的话,好像也行,想问问是怎么回事

说了马上定分

#include <stdio.h>
#include <conio.h>

main ()
{
int arr[10];
int i,j,temp,n;
printf("How many array:");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("input arr[%d]:",i); /* 说这句少了一个')',我看看没少呀 */
scanf("%d",&arr[i]);
}
printf("\n");

/* 冒泡排序 */
for(i=0;i<n-1;i++)
for(j=i;j<n-1;j++)
if (arr[j]>arr[j+1]) {temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}

/* 打印输出 */
for(i=0;i<n;i++)
printf("%5d",arr[i]);

/* 暂停 */
getch();
}

这么改也可以 我试过了 可以的

for(i=0;i<n-1;i++) //、
for(j=0;j<n-1-i;j++) //

for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)

楼上的,j<n,j最大可到n-1,a[j+1]=a[n],错误!
for(i=0;i<n-1;i++)
for(j=i;j<n-1;j++)

我说 LZ 你杂那多 事那