#include<stdio.h>
// 打印结果
void Show(int arr[], int n)
{
int i;
for ( i=0; i<n; i++ )
printf("%d ", arr[i]);
printf("\n");
}
//希尔排序 按从小到大排序
void ShellSort(int arr[], int n)
{
int i, j, k;
int temp, gap;
for (gap = n / 2; gap > 0; gap /= 2) //步长的选取
{
for (i = 0; i < gap; i++) //直接插入排序原理
{
for (j = i+gap; j < n; j += gap) //每次加上步长,即按列排序。
{
temp=arr[j];
for(k=j;k>0&&arr[k-gap]>temp;k-=gap)
{
arr[k]=arr[k-gap];
}
arr[k]=temp;
}
}
}
}
int main()
{
int arr_test[13]={81,94,11,96,12,35,17,95,28,58,41,75,15};
Show(arr_test,13);
ShellSort(arr_test,13);
Show(arr_test,13);
return 0;
}
以上为程序清单,在Windows上vs2015可以正确运行,但在Ubuntu14.04下,终端输入gcc -o shellsort shellsort.c成功编译,但在运行时出现错误:81 94 11 96 12 35 17 95 28 58 41 75 15
段错误 (核心已转储)
,是啥情况?