我正在读取一个浮点数文件,然后对它们进行排序。当我对 100 万个数字使用以下排序和交换函数时,我能够成功地对数字进行排序。但是,当我尝试对 1 亿个数字进行排序时,出现分段错误。我不知道为什么,因为我正在动态分配内存。我如何能够处理超过 100 万个数字?
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
void swap(float *a, float *b, size_t n) {
size_t numbytes;
size_t sz = sizeof(float);
void *temp = NULL;
numbytes = n * sz;
if (numbytes == 0){
exit(EXIT_FAILURE);
}
temp = malloc(numbytes);
memcpy(temp, a, numbytes);
memcpy(a,b,numbytes);
memcpy(b,temp,numbytes);
free(temp);
}
void radixSort(float array[], size_t count) {
int numOfZero = 0;
float a[count];
float *b = a;
for (uint32_t radix=1; radix; radix<<=1) { //unsigned int 32 bit
uint32_t *arrayToInt …Run Code Online (Sandbox Code Playgroud)