c - 获取数组中的元素数量未按预期工作

标签 c arrays sorting insertion-sort

这里我正在实现一个简单的排序(插入),但我没有得到正确的数组大小。也就是说,我的长度变量被设置为等于 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/

相关文章:

c - 有关对齐的问题

android - C源文件交叉编译到Android Arm

javascript - 将字符串输出到数组并从数组输出项目

java - Android 按距离重新排序适配器

javascript - 对包含正零和负零的数组进行排序

c - 重新分配(): invalid next size and double free

c - 链表程序运行不正常

javascript - 在 Javascript 中访问多维对象时使用通配符

javascript - 使用js将原始数据转为Array或Json

excel - VBA 提取所有相关数据并排序和验证