qsort()函数是一个快速排序算法,它能够根据用户提供的比较函数来对数组中的元素进行排序。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
qsort()函数是一个快速排序算法,它能够根据用户提供的比较函数来对数组中的元素进行排序。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
是qsort()函数的C语言实现:
c
void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *))
{
if (nmemb <= 1)
return;
char *pivot = base + (nmemb - 1) * size;
char *left = base;
char *right = pivot - size;
while (left < right) {
while (left < right && compar(left, pivot) <= 0)
left += size;
while (left < right && compar(right, pivot) >= 0)
right -= size;
if (left < right) {
char tmp[size];
memcpy(tmp, left, size);
memcpy(left, right, size);
memcpy(right, tmp, size);
}
}
if (compar(left, pivot) > 0) {
char tmp[size];
memcpy(tmp, left, size);
memcpy(left, pivot, size);
memcpy(pivot, tmp, size);
}
qsort(base, (left - base) / size, size, compar);
qsort(left + size, (nmemb - 1 - (left - base) / size), size, compar);
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(74条)