这里我正在实现一个简单的排序(插入),但我没有得到正确的数组大小。也就是说,我的长度变量被设置为等于 1。另外,我可以通过哪些方法来优化此插入排序算法的代码?谢谢
void insertionSort(int a[])
{
int sorted = 1;
int length = sizeof(a) / sizeof(int);
int i = 0;
int tmp;
printf("%d ", length);
if (length < 2)
return;
for (i = 1; i < length - 1; i++)
{
sorted = i;
while (a[sorted] < a[sorted - 1] && sorted > 0)
{
tmp = a[sorted];
a[sorted] = a[sorted - 1];
a[sorted - 1] = tmp;
sorted--;
}
}
}
最佳答案
int length = sizeof(a) / sizeof(int);
这将返回指针 a 的大小除以 int 的大小。始终等于 1。
您必须将长度传递给函数,void insertSort(int a[], size_t length){
创建数组的函数必须跟踪数组中事件元素的数量才能执行此操作。
关于c - 获取数组中的元素数量未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20591003/