排序算法
lianhuazhi
这个作者很懒,什么都没留下…
展开
-
排序算法——选择排序和冒泡排序
1.0~N-1开始,从0位开始两两比较,小的放前面,大的放后面。1. 在0~N-1个位置中不断循环找到最小的数放在0位。2. 在1~N-1的位置找到最小的数放在1位。时间复杂度O(N^2)原创 2023-07-01 00:15:24 · 47 阅读 · 0 评论 -
排序算法——桶排序
这是最后一个学习的排序算法,之前的排序算法都是基于比较的思路形成的,而该排序算法是数据的状况来确定的。(不是基于比较的)时间复杂度为O(N),额外空间复杂度为O(M)。原创 2023-06-30 11:56:39 · 55 阅读 · 0 评论 -
排序算法——堆排序
首先利用heapinsert函数组织大根堆,得到这样一个序列之后,数组位置为0的数就是大根堆的最大值,因此我们把这个值”弹出“(这个操作指的是,将数组中第一个和最后一个位置的数值交换,同时heapsize--。由于输入的序列是一个数组,每个数都有自己的下标,因此我们可以通过该下标找到该数的父节点( (i-1)/2 )和子节点(左:2i+1;然后从0位置开始做heapify,也就是重新给这个数找位置,heapify结束后,新的根的位置同样是剩下序列的最大值,因此我们把这个值”弹出“。原创 2023-06-28 16:16:06 · 65 阅读 · 1 评论 -
排序算法——快速排序+荷兰国旗问题(颜色分类)
因此,将大于区域的第一个数值与目前的num交换,然后num自然属于这两个区域中间的位置。给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。同理,如果变式题目要求小于某数的数值放在左边,等于放在中间,大于该数的放在右边,就需要把临界值的0、2,改为>、<某值的条件。最终的快速排序算法就是按照定义基准数,不断比较大小,划分大区域、小区域,最后在这两个区域上使用的。让p1和p2指向小区域的最右边和大区域的最左边。原创 2023-06-25 21:20:40 · 51 阅读 · 0 评论 -
排序算法——归并排序+小和问题
归并排序和小和问题原创 2023-06-23 16:59:43 · 76 阅读 · 1 评论