这是学校作业。
其根本问题是获取大量的数字,在其上实现多种不同的shell排序,分析其复杂性等。
我使用选择排序编写了一个shell排序(我知道它效率低下,这就是重点),但我在测试它时遇到了问题。
我的主文件名为sorting_main.c,函数defs位于sorting.c中。
我使用以下命令编译并运行它。
gcc -Werror -Wall -Wshadow -O3 sorting.c sorting_main.c -o proj1当项目完成后,我将能够使用这个命令来运行它.
./proj1 s input.txt seq.txt output.txt不过,如果我在主服务器中手动定义测试参数,那么现在可以在终端中使用./proj1 1来运行它。这就是我被困在这里的地方,我不知道我是做错了什么事情来进行测试,还是我的实现有致命的缺陷。我的目标是测试我的选择类型..。这是我的主要:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
//Function Declarations////
long *Load_File(char *Filename, int *Size);
int Save_File(char *Filename, long *Array, int Size);
void Shell_Insertion_Sort(long *Array, int Size, double *N_Comp, double *N_Move);
void Shell_Selection_Sort(long *Array, int Size, double *N_Comp, double *N_Move);
int Print_Seq(char *Filename, int Size);
int main()
{
long int *Array[11];
*Array[0]=9;
*Array[1]=80;
*Array[2]=4;
*Array[3]=1;
*Array[4]=5;
*Array[5]= 3;
*Array[6]= 7;
*Array[7]=15;
*Array[8]= 9;
*Array[9]= 5;
Shell_Selection_Sort(Array[10],11,0,0);
/*
int i = 0;
for(i=0;i<=10;i++)
{
printf("%li\n",*Array[i]);
}
*/
return 0;
}同样,我在终端中使用以下命令进行编译:
gcc -Werror -Wall -Wshadow -O3 sorting.c sorting main.c -o proj1在这里,我只收到两个警告,说我还没有使用计算值(这是预期的)。
然后我用这个运行:
./proj1有没有人看到我会收到分段错误的原因
#0 0x000000000040096b in Shell_Selection_Sort ()
#1 0x00000000004005d7 in main ()我觉得这应该是个简单的错误..。
发布于 2014-02-16 21:45:48
您正在声明一组指针。
要么声明一个数组,要么声明一个指针(如果你声明一个指针,你需要删除一些内存)。
在您的例子中,您应该声明一个数组。
long Array[11];存储像这样的元素
Array[2]=4;
Array[3]=1;long Array[11]具有long *Array的签名,因此它将使用您正在调用的函数进行编译。
至于这些double *参数,您必须编写一些比较函数..。
https://stackoverflow.com/questions/21817071
复制相似问题