开temp空间时只开空间不拷贝会更好吗?

来源:2-3 归并排序法的内存操作优化

Wonwayshon

2021-04-08 17:06:19

注意到merge当中每次会对temp的指定部分重新拷贝,那么开空间时数组内容似乎不需要,那么在sort(E[] arr)中第一次开temp空间时这样写相比拷贝传入的arr来说会更好吗?

E[] temp=(E[])new Object[arr.length];


写回答

1回答

liuyubobobo

2021-04-08

你的完整逻辑是怎样的?先把你说的这个可能更好的“逻辑”写出来,然后实际测试一下?看看是不是有问题?


加油!:)

2
hiuyubobobo
回复
honwayshon
hp>嗯,明白了。merge 中的 copy 过程是不能省的。


是的,只是单独开空间性能会更好一些的。但是在现代计算机上,这个性能差距近乎是可以忽略不计的。因为这个拷贝过程其实不是遍历整个数组,一个一个赋值,而是直接一块儿内存的拷贝,类似 C 中的 memcpy。


继续加油!:)

h021-04-08
共3条回复

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2610 学习 · 1087 问题

查看课程