- 博客(11)
- 收藏
- 关注
原创 并发编程——ThreadLocal篇
ThreadLocal类翻译过来叫做“线程本地变量”类或者“线程局部变量”类。顾名思义,在多个线程对ThreadLocal类型的对象中的变量进行访问时,其每个线程只能去访问自己的那个独立变量,而不会出现一个线程读取到另一个线程修改变量后的值,这使得在多线程并发执行的场景中做到了线程安全。
2024-09-21 09:20:01 857
原创 排序算法——希尔排序
希尔排序是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为递减增量排序算法,同时该算法是的第一批算法之一。希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录 “基本有序” 时,再对全体记录进行依次直接插入排序。
2024-09-18 09:09:02 254
原创 排序算法——基数排序
之前介绍了计数排序以及基于基数排序的桶排序,计数排序通过统计元素数量来实现排序的。而桶排序假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行。。假设我们需要对 n=106 个学号进行排序,而学号是一个 8 位数字,这意味着数据范围 m=108 非常大,使用计数排序需要分配大量内存空间,而基数排序可以避免这种情况。基数排序(radix sort)
2024-09-16 11:45:38 852
原创 排序算法——桶排序
桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行。
2024-09-15 13:34:07 390
原创 排序算法——归并排序
归并排序(merge sort)是一种基于分治策略的排序算法,包含图 1所示的“划分”和“合并”阶段。(图 1 归并排序的划分与合并阶段)
2024-09-13 15:36:04 429
原创 排序算法——快速排序
快速排序是一种基于分治策略的排序算法,运行高效,应用广泛。快速排序的核心就是“哨兵划分”,其目的是:选择数组中的某个元素作为“基准数”,其左边均为小于基准数的数,其右边均为大于基准数的数。哨兵划分完成后,原数组被划分成三部分:左子数组、基准数、右子数组,且满足“左子数组任意元素 ≤ 基准数 ≤ 右子数组任意元素”。因此,我们接下来只需对这两个子数组进行排序。之后进行了两次复杂度优化,一次是对基准数的选取,优化时间复杂度,一次是对递归数组的选取,优化空间复杂度。
2024-09-12 15:56:42 1342
原创 排序算法——插入排序
插入排序(insertion sort)是一种简单的排序算法,它的工作原理与手动整理一副牌的过程非常相似。具体来说,我们在未排序区间选择一个基准元素,将该元素与其左侧已排序区间的元素逐一比较大小,并将该元素插入到正确的位置。
2024-09-11 19:18:23 388
原创 排序算法——冒泡排序
冒泡排序(bubble sort)通过连续地比较与交换相邻元素实现排序。这个过程就像气泡从底部升到顶部一样,因此得名冒泡排序。冒泡过程可以利用元素交换操作来模拟:从数组最左端开始向右遍历,依次比较相邻元素大小,如果“左元素 > 右元素”就交换二者。遍历完成后,最大的元素会被移动到数组的最右端。
2024-09-10 11:58:29 210
原创 算法排序——选择排序
选择排序(selection sort)的工作原理非常简单:开启一个循环,每轮从未排序区间选择最小的元素,将其放到已排序区间的末尾。
2024-09-09 13:51:38 249
原创 算法排序——堆排序
从今天开始尝试写一写博客吧,记录一下每日的所学。堆排序(heap sort)是一种基于堆数据结构实现的高效排序算法。以上方法虽然可行,但需要借助一个额外数组来保存弹出的元素,比较浪费空间。在实际中,我们通常使用一种更加优雅的实现方式。
2024-09-08 20:22:01 289
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人