- 博客(63)
- 收藏
- 关注
原创 十大排序之Counting Sort 计数排序
从待排序数组的末尾开始遍历,根据元素的值和辅助计数数组中的累加值确定元素在排序后数组中的位置,并将元素放置到正确的位置。计数排序(Counting Sort)是一种线性时间复杂度的排序算法,适用于一定范围内的整数排序。计数排序的时间复杂度为O(n + k),其中n是待排序数组的大小,k是待排序数组中元素的范围。计数排序的空间复杂度为O(n + k),其中n是待排序数组的大小,k是待排序数组中元素的范围。对辅助计数数组进行累加操作,以确定每个元素在排序后的数组中的位置。
2023-06-29 16:25:50 95
原创 十大排序之Heap Sort 堆排序
堆排序的时间复杂度为O(n log n),无论是最好情况、最坏情况还是平均情况下。堆排序的空间复杂度为O(1),因为只需要使用常数级别的额外空间。堆排序是一种不稳定的排序算法,适用于各种数据规模。
2023-06-29 16:22:51 84
原创 十大排序之Merge Sort 归并排序
归并排序的时间复杂度始终为O(n log n),无论是最好情况、最坏情况还是平均情况下。归并排序的空间复杂度为O(n),因为需要使用额外的空间来存储临时数组。归并排序是一种稳定的排序算法,适用于各种数据规模。
2023-06-29 16:17:34 68
原创 十大排序之Quick Sort 快速排序
快速排序的时间复杂度取决于基准的选择和数组的划分情况,最坏情况下为O(n^2),最好情况下可达到O(n log n)。快速排序的空间复杂度为O(log n),因为递归调用需要使用额外的栈空间。快速排序是一种原地排序算法,不需要额外的空间来存储临时数组。平均情况下,快速排序的时间复杂度为O(n log n)。
2023-06-29 16:17:00 59
原创 十大排序之Shell Sort 希尔排序
希尔排序(Shell Sort)是一种改进的插入排序算法,其思路如下:首先,选择一个增量序列(通常为n/2,n为数组长度)来划分数组。按照增量序列的步长,对子序列进行插入排序。逐渐缩小增量序列的步长,重复上述步骤,直到增量序列为1,即对整个数组进行最后一次插入排序。希尔排序的时间复杂度取决于增量序列的选择,最坏情况下为O(n^2),最好情况下可达到O(n log n)。希尔排序相较于简单插入排序,在大规模数据集上表现更优,但并不如快速排序或归并排序等高级排序算法效率高。
2023-06-29 16:11:00 43
原创 十大排序之Selection Sort 选择排序
选择排序(Selection Sort)的思路是遍历待排序的数组,将当前位置视为最小值的索引。在剩余未排序部分中,循环并比较元素,找到最小值,并更新最小值的索引。由于选择排序在每次遍历中只进行一次交换,因此其交换操作相对较少,适用于较小规模的数组排序。然而,对于大规模数据集,选择排序的性能相对较差,更高效的排序算法如快速排序或归并排序更为适用。空间复杂度为O(1),因为算法只需要常数级的额外空间来存储索引和临时变量。选择排序的时间复杂度为O(n^2),其中n是待排序列表的元素个数。
2023-06-29 16:04:29 44
原创 十大算法之冒泡排序
冒泡排序应该是每个学习计算机的第一个排序算法,通过相邻元素的比较和交换,逐步将最大的元素移动到列表的末尾。需要注意的是,冒泡排序是一种稳定的排序算法,即相等元素的相对顺序在排序后保持不变。方法实现了冒泡排序算法。通过嵌套的两个循环,依次比较相邻的元素并进行交换。空间复杂度为O(1),因为只需要常量级的额外空间来存储临时变量。时间复杂度为O(n^2),其中n是待排序列表的元素个数。方法中使用一个示例数组进行排序,并输出排序结果。
2023-06-28 19:08:58 40
原创 Java Concurrencyin Practice 并发编程实践系列 第二章 线程安全 Thread Safety 下
因此,为了简化开发过程并减少潜在的错误和问题,最好在最初的设计阶段就考虑并发访问,并设计出线程安全的类。但在实际情况中,设计一个完全线程安全的类可能并不容易。如果在最初的设计中就充分考虑了并发访问的情况,并采取了适当的同步措施,那么就能够确保类在多线程环境下的安全性。并发程序的行为是不确定的,因为线程的执行顺序和交互是受到多种因素影响的,包括底层硬件和操作系统的调度策略。概括一下,上面讲的是通过封装状态并限制对状态的访问,可以更好地控制多线程环境下的数据共享和访问,从而使程序更容易维护和确保线程安全性。
2023-06-28 18:59:38 35
原创 Java Concurrencyin Practice 并发编程实践系列 第二章 线程安全 Thread Safety 上
Thread Safety
2023-06-28 15:24:00 46
原创 Java Concurrencyin Practice 并发编程实践系列1
Java Concurrencyin Practice java并发编程实践
2023-06-28 00:27:25 86
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人