我在C中有一个高性能,无等待的向量实现,允许我线性索引数组,但是使用多个数组实现.现在我需要对这个向量进行排序.显然我不能使用qsort()标准函数,因为数组不是单个内存块.
虽然没有这样实现,但假设60个槽位向量被定义为:
struct vector {
int *buckets[4];
};
struct vector v;
v.buckets[0] = calloc(4, sizeof (int));
v.buckets[1] = calloc(8, sizeof (int));
v.buckets[2] = calloc(16, sizeof (int));
v.buckets[3] = calloc(32, sizeof (int));
Run Code Online (Sandbox Code Playgroud)
我有一个简单的内联函数,可以将给定的索引值调整为0到59(例如,getval(8)将返回buckets[1][4]并getval(9)返回buckets[1][5]等).
因此,虽然矢量可以线性索引,但它不是线性存储的.可以使用quicksort来对这个向量进行排序吗?如果没有,我应该看看任何其他排序算法?