• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 关于排序算法的困惑,关于选择排序、插入排序和希尔排序

关于排序算法的困惑,关于选择排序、插入排序和希尔排序

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了希尔排序的算法,希尔排序是稳定的算法,希尔排序,希尔排序流程图,希尔排序时间复杂度等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:关于排序算法的困惑,关于选择排序、插入排序和希尔排序
描述:

我在书上看到的说明是:一般情况下选择排序慢于插入排序慢于希尔排序,可是我自己用Python测试了下,竟然是选择排序是最快的,希尔排序比插入排序稍微快一点。。

我自己分析原因可能是插入排序和希尔排序有太多交换元素的操作了,所以效率低,但书上说的是希尔排序会是最快的,请各位大神指点?

我的测试代码在这里:http://paste.ubuntu.com/8385144


解决方案1:

插入排序的的if语句应该写在内循环条件里面,你的插入排序时间复杂度和选择排序时间复杂度一样,所以慢
Java
/**
* Insertion sort based on exchange
* @param array, Array of Comparable to be Sorted
*/
public static void sort( Comparable[] array ){
for (int i = 1; i < array.length; i++) {
for(int j=i;j>0&&less(array[j],array[j-1]);j--){
exch(array, j, j-1);
}
}
}

解决方案2:

搞1w个用例测一下

解决方案3:

从理论上讲理 选择排序<插入排序<希尔排序 但是实际耗时取决于样本和具体实现。

解决方案4:

说快慢是在基于时间复杂度、空间复杂度等等的条件,你不能说写个程序一侧看谁快,会有偶然性的,请从算法的性能因素方面来考虑


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于排序算法的困惑,关于选择排序、插入排序和希尔排序

相关文章

  • 2017-06-07 golanggolang的url包中没有Query方法?
  • 2017-06-07 二叉树结点位置对调的问题
  • 2017-06-07 如何看待富了就移民这个问题如何查看这个函数是怎么运行的?
  • 2017-06-07 (python)tornado如何在日志中加入ip
  • 2017-06-07 pythonurllib2的发送get请求的形式
  • 2017-06-07 flask如何返回图片流?
  • 2017-06-07 (python)binarytreeimplemention
  • 2017-06-07 郁闷了,jboss启动异常,不知道什么原因~~支持jdk16么?
  • 2017-06-07 golanggolang解析中文字符html出错
  • 2017-06-07 Laravel路由指定到Controller方法?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • (python)关于leetcode刷题的顺序与资源?
    • 关于hibernatelist的list-index无值写入问题
    • 请问循环能代替所有递归吗?
    • 光说不做,逻辑思维能力差?
    • shell中保存命令的运行结果
    • python中使用lxml解析中文网页出现编码问题,如何解决?
    • python爬虫(python)py2exe问题求助
    • Python27怎么与USB外设交互读外设通过USB串口发送来的数据,通过USB串口发送数据给外设?
    • 哪位大神有opencvpython做的面部识别代码?
    • 如何用VFP,将一个网页,保存为一个图片

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有