自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Effective Modern C++ Notes.1

任何函数都能被删除(= delete),包括非成员函数和模板实例public:template该建议只适用于unique_ptr,不适用于shared_ptr。

2024-05-30 21:04:50 769

原创 排序算法——基数排序

基数排序:一种多关键字排序,关键码由多个字段组成,如可以将整数的比较拆分为各数位上的比较,日期关键码分解为年月日等。从低优先级字段开始,针对每一个字段,都进行桶排序,即可实现按整个关键码的排序,如个位数开始,对每个数位都进行排序。基数排序的稳定性取决于桶排序的稳定性。时间复杂度:O(nk)空间复杂度:O(n)

2023-08-11 17:50:10 37 1

原创 排序算法——桶排序

桶排序:找到最大和最小值,准备一些桶,桶的个数为len,即将【min,max】范围划分为len段,那么可以根据大小将数组元素对应放入各桶中,然后再将桶内元素排序,最终全部有序。时间复杂度:最好情况桶内不需要排序O(n+k),最差情况一个桶O(n^2)某种意义上,计数排序便是桶排序的一种,桶的个数是max-min+1。空间复杂度:O(n)

2023-08-11 17:12:29 95 1

原创 排序算法——计数排序

计数排序思想:得到数组nums中最大值max,最小值min,建立大小(max-min+1)的数组cnts,以nums[i]-min为key,cnts数组中存放nums[i]的个数,然后遍历cnts数组,重新将key个value放入nums中,最终数组有序。可以看出,时间复杂度和空间复杂度均匀(max-min)有关,并且hash(nums[i]) = nums[i] - min是整数,nums[i]也是整数。空间复杂度:O(k), k=max-min+1。时间复杂度:O(n+k)

2023-08-11 16:05:18 33 1

原创 排序算法——堆排序

堆排序:将数组维护成大根堆,然后将最大值放置在数组右侧,继续维护堆,直至堆为空,数组有序。时间复杂度:O(nlogn)空间复杂度:O(1)

2023-08-11 15:17:44 30 1

原创 排序算法——快速排序

快速排序思想:选取一个数target,可以将小于target的数都放置在左侧,大于其的数都放置在右侧;然后在针对左右侧进行同样的操作,最终整个数组有序。注释中也提到防止退化的原因。对于LeetCode912题,采用“>=”的版本将超时,而防止退化的版本则可以通过。时间复杂度:最优情况O(n),平均情况O(nlogn),最差情况O(n^2)空间复杂度:O(logn)

2023-08-11 14:54:46 21 1

原创 排序算法——归并排序

将两个有序数组归并成一个有序数组是比较容易的事情,因为可以将数组分解,分别排序,然后归并。针对于归并排序,可以写成递归形式和迭代形式。另外,归并时可以使用O(n)或者更小的空间用于存放归并后的数组。时间复杂度:O(nlogn), 分治递归logn层,每层归并时都需要遍历n。这里给出常见的递归形式代码。空间复杂度:O(n)

2023-08-11 12:00:28 25 1

原创 排序算法——希尔排序

希尔排序是插入排序的改进版本,在插入排序中,都是比较相邻数字的大小,与之对应的,数字也只能一次一步的移动到正确位置,如果将步长增大,则数字移动的次数会降低;逐步将步长减少至1,确保最终排序正确。时间复杂度:最优情况O(n),最差和平均性能优于插入排序。对于leetcode912排序数组,插入、冒泡、选择排序均超时,希尔排序可以通过。因为在步长>1时,可能会导致交换元素位置,不稳定排序。空间复杂度:O(1)

2023-08-11 11:27:53 40

原创 排序算法——插入排序

最差情况和平均情况O(n^2)时间复杂度:最好情况O(n),此时已经完全排序,第二个循环不需要进行。插入排序:将当前位置的数字插入前面数组中的适当位置,稳定排序。空间复杂度:O(1)

2023-08-11 11:04:44 37 1

原创 排序算法——选择排序

选择排序:每次都从剩余的数字中选取最小的数字,交换当前位置和最小值,因此是不稳定排序。时间复杂度:最好、最差、平均均是O(n^2)空间复杂度:O(1)

2023-08-11 10:49:37 31

原创 排序算法——冒泡排序

算法:从第一个数开始遍历,比较相邻位置的两个数,如果错序,则交换位置,并记录最后一次交换的位置last;下次再从头遍历时,只遍历到end=last。比较相邻位置的两个数,将较小的数上移,类似于冒泡,因此称为冒泡排序。两个数相等时,不交换位置,因此是稳定排序。时间复杂度:最好情况O(n),最差情况O(n^2),平均情况O(n^2)空间复杂度: O(1)

2023-08-11 10:40:04 33 1

将在文章顶部展示,如再次编辑请到内容管理-下载类目

将在文章顶部展示,如再次编辑请到内容管理-下载类目

2024-06-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除