我正在尝试使用 C 实现计数排序算法,但在测试一百万个整数期间我不断遇到分段错误。请问有什么帮助吗?我的代码如下(“type.h”为 unsigned int 数据类型提供 typedef “unit”):
#include <stdlib.h>
#include "csort.h"
#include <stdio.h>
#include "type.h"
unsigned int*
countingSort(unsigned int *A, int n) {
uint i, j, l = 0, k = 0;
uint *C;
for (i = 0; i < n; i++)
if (A[i] > k)
k = A[i];
C = (uint*)malloc((sizeof(uint))*(k+1));
for (i = 0; i <= k; i++)
C[i] = 0;
for (i = 0; i < n; i++)
C[A[i]]++;
for (i = 1; i < k; i++)
for (j = 0; j < C[i]; j++)
A[l++] = i;
free(C);
return A;
}
我正在处理的输入是大数字,因此 k 很大。n 是输入数组中的整数个数(一百万)。