基本问题是获取大量数字,在其上实现多种不同类型的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。这就是我陷入困境的地方,我不知道我是否在做一些事情上做错了测试,或者我的实现是否存在致命缺陷。 我的目标是测试我的选择排序...... 这是我的主要内容:
#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
我只收到2条警告,说我还没有使用计算值(预期)
然后我用这个来运行:
./proj1
有没有人看到我会在
中收到段错误的原因#0 0x000000000040096b in Shell_Selection_Sort ()
#1 0x00000000004005d7 in main ()
我觉得这应该是一个简单的错误...
答案 0 :(得分:3)
你正在声明一个指针数组。
声明数组或指针(如果声明指针,则需要malloc一些内存)。
在你的情况下,你应该声明一个数组。
long Array[11];
存储此类元素
Array[2]=4;
Array[3]=1;
long Array[11]
具有long *Array
的签名,因此它将使用您正在调用的函数进行编译。
现在对于那些double *
个参数,你将不得不写一些比较函数......