MergeSort需要注意的地方

今晚写MergeSort 比写QuickSort好了点 但是还是没有秒杀! 伤心。

只是记下这个需要注意的出错的地方:

数据结构:

template<typename T>struct SeqList

{

    T* pData;

    int iLength;

};

错误出在Merge函数中:

我出错的写法是:

template<typename T>void Merge(SeqList src, SeqList &dest, int seq1_start, int seq1_end, int seq2_end)

我的想法是src作为源数据,传参的时候是值传参,所以会复制整个结构体出来,这样就不会影响写入到原来的SeqList了(注意dest是一个引用)

但是我居然又遗漏了浅复制这个基本的概念。

因为我定义的结构体里面的Data是一个指针,所以复制的时候只会复制指针,而数据所在的内存区是不会复制的,也就是src和dest都指向同一个内存区。

看来使用指针一定要慎之又慎啊!!!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值