- 博客(3)
- 收藏
- 关注
原创 java中数组为null和数组长度为0的区别
在 Java 中,null 表示“没有值”或“空”。它是一个关键字,用于表示一个对象变量不引用任何对象。这意味着该变量没有指向任何有效的。地址,因此它不指向任何对象。如果尝试在 null 引用上调用任何方法或字段,则会引发 NullPointerException 异常。而数组的长度为0表示在堆区创建了一个内存空间,里面可以储存的元素个数为0。null可以转化为任意的引用数据类型。
2023-08-08 17:37:03 286
原创 快速排序,希尔排序,归并排序,基数排序的时间复杂度比较
希尔排序通过gap步长,不着眼于一个个细节,而着眼于全局,将全局向有序推进,从而相对于插值排序减少了移位次数,优化了时间,时间复杂度与gap有关,插值排序相当于gap=1的情况。快速排序最好的情况是选择的基数更将数组左右平分,这种情况下形成的递归树的高度为logn,每一层的规模为n,所以时间复杂度为O(nlogn)。基数排序处理一次的时间复杂度为O(n),处理的次数由最大数的位数决定,所以时间复杂度为O(n)。最坏的情况为基数总是最大或者最小,这种情况相当于冒泡排序,时间复杂度为O(n^2)
2023-08-08 10:59:14 475
原创 为什么冒泡排序比插值排序慢?为什么希尔排序用交换法比移位法慢?
可以看到,单纯的if置空语句耗时都比插值排序多,这是因为if语句里面有arr【j】的缘故,要从堆区中找到arr【j】的数值然后进行比较,虽然数组根据索引查找速度快,但是依然会消耗一定时间。而冒泡排序消耗的时间更多,因为其中的if语句里面进行数组索引查找的次数更多,插值查找耗时少因为if语句执行次数少并且其中执行数组根据索引查找的代码少。所以插值查找和冒泡查找时间复杂度相同,但是插值查找更快。而希尔排序里面使用交换法比移位法慢也是如此,因为交换法里面if语句次数多并且if语句内执行数组根据索引查找的代码多。
2023-08-08 10:36:35 145
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人