海上月是天上月,眼前人是心上人。
10 2024 档案
摘要:计数排序 计数排序(counting sort)通过统计元素数量来实现排序,通常应用于整数数组。 简单实现 给定一个长度为n的数组nums,其中的元素都是“非负整数”,计数排序的整体流程如下: 遍历数组,找出其中最大的数组,记为m,然后创建一个长度为 m+1 的辅助数组counter。 借助coun
阅读全文
摘要:桶排序 前面的快速排序、归并排序、堆排序等都是属于“基于比较的排序算法”,它们通过比较元素间的大小来实现排序。此类排序算法的时间复杂度无法超越O(nlogn)。下面介绍几种“非比较排序算法”,它们的时间复杂度可以达到线性阶。 桶排序(bucket sort)是分治策略的一个典型应用。它通过设置一些具
阅读全文
摘要:堆排序 堆排序(heap sort)是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”实现堆排序。 输入数组并建立小顶堆,此时最小元素位于堆顶。 不断执行出堆操作,依次记录出堆元素,即可得到从小到大排序的序列。 以上方法虽然可行,但需借助一个额外数组来保存弹
阅读全文
摘要:求最大公因数 求两数的最大公因数通常的做法是对两个数因式分解,找出共同的素数,然后求出最大公因数(GCD)。但是当数字越大时,因式分解就越困难,此时,使用欧几里得算法就能高效求出其最大公因数。 欧几里得算法 欧几里得算法(又称辗转相除法)用于计算两个数的最大公因数,被称为是世界上最古老的算法。 基本
阅读全文
摘要:删除字符串中的所有空格与换行 使用头文件中的remove函数,注意:std::remove 不会改变容器的大小,它只是将元素移动到容器的末尾。因此,我们需要调用 erase 来实际从字符串中删除这些元素。 使用 std::remove 算法,它重排元素,使得要删除的元素(在这里是空格和换行符)被放在
阅读全文