数组“冒泡排序”,求教各位,该如何解决
数组“冒泡排序”,求教各位
编译器没有报错,到输出结果是错的,请求指教,谢谢!
#include<stdio.h>
void sort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
for(j=1+i;j<n-i;j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
int main()
{
int a[5],i;
printf("请输入5个数:\n");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
sort(a,5);
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\n");
}
------解决方案--------------------
编译器没有报错,到输出结果是错的,请求指教,谢谢!
#include<stdio.h>
void sort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
for(j=1+i;j<n-i;j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
int main()
{
int a[5],i;
printf("请输入5个数:\n");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
sort(a,5);
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\n");
}
------解决方案--------------------
- C/C++ code
#include<stdio.h> void sort(int a[],int n) { int i,j,k,t; for(i=0;i<n;i++) for(j=0; j < n- i;j++) // j 要从 0 开始 if(j + 1 < n && a[j] < a[j+1]) // 当i = 0 时 a[j+1]数组溢出了 { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } int main() { int a[5],i; printf("请输入5个数:\n"); for(i=0;i<5;i++) { scanf("%d",&a[i]); } sort(a,5); for(i=0;i<5;i++) printf("%d ",a[i]); printf("\n"); }
------解决方案--------------------
- C/C++ code
#include<stdio.h> void sort(int a[],int n) { int i,j,temp; for(i=0;i<n-1;++i) for(j=0;j<n-i-1;++j) if(a[j]<a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }; } void main() { int a[5],i; printf("请输入5个数:\n"); for(i=0;i<5;i++) { scanf("%d",&a[i]); } sort(a,5); for(i=0;i<5;i++) printf("%d ",a[i]); printf("\n"); }
------解决方案--------------------