C 插入排序运行时错误

C 插入排序运行时错误,c,sorting,insertion-sort,C,Sorting,Insertion Sort,我创建了一个基本数组,并尝试使用插入排序对其进行排序,但在运行程序时出现了这些错误。编译后没有错误 ./insertionsort.c:第3行:$'\r':未找到命令 ./insertionsort.c:第4行:意外标记“(”附近的语法错误 '/insertionsort.c:第4行:`void sort(int*array,int n) 有人知道如何解决这个问题吗 #include <stdio.h> #include <stdlib.h> void sort(int

我创建了一个基本数组,并尝试使用插入排序对其进行排序,但在运行程序时出现了这些错误。编译后没有错误

./insertionsort.c:第3行:$'\r':未找到命令

./insertionsort.c:第4行:意外标记“(”附近的语法错误

'/insertionsort.c:第4行:`void sort(int*array,int n)

有人知道如何解决这个问题吗

#include <stdio.h>
#include <stdlib.h>

void sort(int *array, int n);
void swap(int array1, int array2);


void main()
{
    int arr[] = {1, 5, 3, 5, 4, 3, 2, 7, 4, 9, 6};
    int n = sizeof(arr);

    sort(arr, n);
}

void sort(int *array, int n)
{
    int i, j;

    printf("Array before sorting: ");
    for (i=0; i<n; i++)
        printf("%d ", &array[i]);

    for (i=1; i<n; i++)
    {
        for (j=i; j>0; j--)
        {
            if (array[j-1] > array[j])
                swap(array[j], array[j-1]);
        }
    }

    printf("Array after sorting: ");
    for (i=0; i<n; i++)
        printf("%d ", &array[i]);
}

void swap(int array1, int array2)
{
    int temp;
    temp = array1;
    array1 = array2;
    array2 = temp;
}
#包括
#包括
无效排序(int*数组,int n);
无效掉期(int array1、int array2);
void main()
{
int arr[]={1,5,3,5,4,3,2,7,4,9,6};
int n=尺寸(arr);
排序(arr,n);
}
无效排序(int*数组,int n)
{
int i,j;
printf(“排序前的数组:”);
对于(i=0;i数组[j])
交换(数组[j],数组[j-1]);
}
}
printf(“排序后的数组:”);

对于(i=0;i我想你可能想这样做

int n = sizeof(arr) / sizeof(int);
as
sizeof(arr)
将为您提供阵列所需的总字节数

此外,您正在打印指针。因此您可以删除打印语句中的
&

printf("%d ", array[i]);
最后,您将通过值传递给
swap
函数。因此原始数组不会被修改。您可能需要这样的签名:

void swap(int *array1, int *array2);

我在运行程序时没有遇到任何错误,只有针对您的
printf
的警告,原因就是上面提到的。您应该编译/运行您的程序,如下所示:
gcc-o main.c
其中
main.c
将是包含上述代码的源文件。然后键入
/main

从错误消息中的程序名
/insertionsort.c
,我猜您试图直接执行源代码,这不是正常的过程


我想你应该在终端上键入编译的二进制文件的名称,而不是源代码来运行程序。

你是如何编译源文件的?你是如何运行的?你是在Linux还是Windows上?你是在使用IDE还是命令行?我在Windows上,我在使用cygwin terminalWell,那么,我想你可以使用
gcc-o main.c
其中
main.c
将是包含上述代码的源文件。然后只需键入
/main
即可运行您的程序。我不知道问题可能出在哪里,但可能我遗漏了一些内容。您可以尝试一下吗?或者您正在使用其他方法来构建/运行您的应用程序吗?我没有我没有gcc,但我有g++,谢谢!那么…它能正常工作吗?我如何解决将值传递给交换函数的问题?我尝试在交换函数中的array1和array2之前添加一个asterix,但我得到了更多errors@Michael,您还必须在
排序
函数中更改
交换
的调用。提示:它已与指针有关。感谢您的帮助,我无法理解交换函数(已经晚了),所以我就把它拿出来,把它的内容放在我的if语句中。现在工作得很好,这会很有趣。但是
.c
文件在默认情况下是可执行的吗?!他不是应该得到一个
被拒绝的权限吗?我猜他不是错了
chmod+x insertionsort.c
。@Mihai这次执行是成功的rmed在Windows上,在Windows上执行文件不需要这样的
chmod