【发布时间】:2015-07-28 12:18:56
【问题描述】:
我输入的任何值都得到错误的输出,例如,如果我输入了 5,4,3,2,1,则输出为 1,1,1,1,1...我使用了气泡函数bubblesort ...中的排序算法并将数组A传递给函数,但输出仅包含我输入的最后一个值。
#include <stdio.h>
#define SIZE 5
void bubblesort(int A[]);
int main(void)
{
int A[SIZE]={0};
int i;
puts("Enter value to store it in integer");
for(i=0;i<SIZE;i++)
{
scanf("%d",&A[i]);
}
puts("");
bubblesort(A);
}
void bubblesort(int A[])
{
int i,j;
for(i=0;i<SIZE;i++)
{
for(j=0;j<4;j++)
{
if(A[j]>A[j+1])
{
int temp;
temp=A[j+1];
A[j]=A[j+1];
A[j]=temp;
}
}
}
for(i=0;i<SIZE;i++)
{
printf("%d ",A[i]);
}
}
【问题讨论】:
-
A[j]=A[j+1];应该是A[j+1]=A[j]; -
交换是这样完成的
temp = A[j]; A[j] = A[j + 1]; A[j+1] = temp; -
要使冒泡排序不再依赖于固定的
#define,请考虑传递要排序的数组的大小(即void bubblesort (int *a, size_t n)),并从函数中删除所有输出例程并将其放回原处在调用者中(即main())。 注意: 您的循环声明将(例如for (i = 0; i < (int)n; i++))带有必要的强制转换以避免比较有符号和无符号值。 (n应该是size_t(无符号),因为它永远不会是负数)
标签: c arrays function sorting bubble-sort