为什么单链表上 插入排序比选择排序要慢啊

韭菜盒子123 2020-05-24 10:45:51
写了两个链表的排序,随机数测到50000个的时候,插入排序开始比选择排序要慢了..
按理说选择排序不是会有更多的顺序访问吗,对链表不是应该更加不利吗
...全文
226 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wowpH 2020-06-02
  • 打赏
  • 举报
回复
单链表插入排序,,,真的有意义吗? 数组插入排序是向前查找,可是单链表根本不满足向前查找的条件。 双向链表还可以搞一搞。
韭菜盒子123 2020-06-02
  • 打赏
  • 举报
回复
引用 2 楼 wowpH 的回复:
单链表插入排序,,,真的有意义吗? 数组插入排序是向前查找,可是单链表根本不满足向前查找的条件。 双向链表还可以搞一搞。
单链表倒是也能从前向后扫描.
fztfztfzt 2020-05-29
  • 打赏
  • 举报
回复
链表只有比较和赋值,无需考虑交换: 选择排序是每次遍历未排序的数,从中选择一个最小的(比较n*(n-1)/2次,每次赋值(1~n次+赋值next(n次)),插入链表(n次) 插入排序每次从未排序的数中取一个(n次),插入链表中(比较(1~n)次,赋值next(n次)) 比较 + 插入 + 赋值 + 设置next 选择排序最好:n*(n-1)/2 + n + n+ n*(n-1)/2; 最坏:n*(n-1)/2 + n + n*(n-1); 插入排序最好:n + n + 0;最坏:n*(n-1)/2 + n + n*(n-1)/2; 随机数据越多,越接近乱序,最坏情况。 针对链表来说,插入是要优于选择的。 具体问题还要看你的代码。 如果是数组排序的话,可以参考关于插入排序和选择排序的比较

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧