A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 兜兜转转 中级黑马   /  2013-8-20 12:25  /  2123 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看毕老师的视频day4里面老师讲完选择排序和冒泡排序之后,然后说,这些元素交换值是在堆内存中完成的,为了提高效率,不要立即在堆内存中去做交还动作,先在栈内存中缓存,等到比较完再一次性的交换调整那些要交换的元素即可,这个是怎么理解呢?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

6 个回复

倒序浏览
排序不是在栈内存中缓存,而是在在栈内存中定义两个临时存储变量,将需要置换位置的元素的角标存储在里面,等所有元素都比较完后,去最终需要换位置的角标所对应的元素的值进行置换,也就是说每一次元素中的比较,在堆内存中都不进行元素间位置的置换,而是将每次比较后,最终需要置换位置元素的角标位记录在栈内存中,等这一次比较完后,在去置换最终角标所指向的元素,从而减少元素间的置换次数,来提高效率。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
我觉得是因为堆内存存放的是对象之类要长期存在的,开辟空间过多会占用大量内存,而栈内存放的是方法之类的,随着方法的结束而释放空间,起到的是缓存性质,所以这种情况尽量不要在堆中进行
回复 使用道具 举报
吃阁子的猫 发表于 2013-8-20 20:23
我觉得是因为堆内存存放的是对象之类要长期存在的,开辟空间过多会占用大量内存,而栈内存放的是方法之类的, ...

哎哟,小静茹很给力呀,挺专业,不错赞一个。继续努力{:soso_e142:}
回复 使用道具 举报
肥猫 发表于 2013-8-20 20:55
哎哟,小静茹很给力呀,挺专业,不错赞一个。继续努力

{:soso_e127:}是你啊
回复 使用道具 举报
肥猫 发表于 2013-8-20 20:55
哎哟,小静茹很给力呀,挺专业,不错赞一个。继续努力

是我高中同学吗?我一个同学叫静茹
回复 使用道具 举报
兜兜转转 发表于 2013-8-21 07:55
是我高中同学吗?我一个同学叫静茹

呵呵,应该不是,同名吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马