排序算法

点击这里查看配套的教学视频

点击跳转到算法课程所有目录

1 快速排序

《算法导论》书中的第95页。时间复杂度O(nlgn),空间复杂度O(lgn)。

快速排序源码

c语言快速排序的库函数用法测试程序请点击这里。函数原型:

// compar(a, b):
//   return *a - *b: 升序
//   return *b - *a: 降序
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *));

2 归并排序

《算法导论》书中的第17页。时间复杂度O(nlgn),空间复杂度O(n)。

归并排序源码

3 堆排序

点击这里查看“堆(优先队列)”

4 leetcode 217. 存在重复元素

这个题目主要是熟悉一下c语言快速排序的库函数qsort()的用法,

c语言实现:

int cmp(const void *a, const void *b)
{
    return *(int *)a - *(int *)b;
}

bool containsDuplicate(int* nums, int numsSize) {
    qsort(nums, numsSize, sizeof(int), cmp);
    for (int i = 1; i < numsSize; i++) {
        if (nums[i] == nums[i - 1])
            return true;
    }
    return false;
}